WordPress Popular Posts で出力される HTML をカスタマイズする

簡単に記事ランキングを表示できるため、多くのWordPressサイトで利用されている人気プラグイン「WordPress Popular Posts」。しかし、サイトのデザインに合わせて表示するには、出力されるHTMLを適宜カスタマイズする必要があります。

今回は、その「WordPress Popular Posts」で出力される HTML をカスタマイズする方法についてまとめました。

使用バージョン:WordPress 6.7.2、WordPress Popular Posts 7.2.0

WordPress Popular Posts で記事ランキングを表示させる方法

まず、詳しいカスタマイズ方法の前に、WordPress Popular Posts で記事ランキングを表示させる方法について簡単に説明します。主な方法は 2 つです。

ショートコード [wpp] を使って表示

ショートコード[wpp]を使用して表示させる方法です。ショートコード内でオプションを指定することで、出力する情報をカスタマイズできます。

例えば、データの集計期間を 1 ヵ月、表示順を閲覧数順、取得件数を 5 件で取得する場合は、以下のようになります。

[wpp range='monthly' order_by='views' limit=5]

wpp_get_mostpopular() を使って表示

もう一つの方法が、wpp_get_mostpopular()関数を使って表示させる方法です。オプション配列を渡すことで、出力する情報をカスタマイズできます。

ショートコードの例と同じく、データの集計期間を 1 ヵ月、表示順を閲覧数順、取得件数を 5 件で取得する場合は、以下のようになります。

wpp_get_mostpopular(array(
  'range' => 'monthly',
  'order_by' => 'views',
  'limit' => 5,
));

さて、ここからはいよいよ詳しいカスタマイズ方法です。

[wpp] と wpp_get_mostpopular() で使えるオプション

上の例で使用したオプション以外にも、WordPress Popular Posts には様々なオプションが用意されており、それらを駆使することで柔軟なカスタマイズが可能です。ちなみに、wpp_get_mostpopular()は、内部的にdo_shortcode()[wpp]を呼び出しているため、これから紹介するオプションはどちらの場合でも使用することができます。

数あるオプションの中でも、出力されるHTMLの構造を細かく設定できる post_html は特に重要です。このオプションは設定内容が複雑なため、詳細は最後に記載します。

取得条件に関するオプション

オプション名説明指定可能な値デフォルト値
limit取得件数数値10
offset取得開始位置数値0
range集計期間'daily'
'last24hours'
'weekly'
'last7days'
'monthly'
'last30days'
'all'
'custom'
'daily'
time_unit rangecustomの時に使用、時間の単位を指定。 'minute'
'hour'
'day'
'week'
'month'
'hour'
time_quantity rangecustomの時に使用、時間の数値を指定。 数値24
freshness集計期間内に投稿された記事のみを対象にするかどうか。boolfalse
order_by表示順で使用する項目'comments'
'views'
'avg'
'views'
post_type対象の投稿タイプ文字列(複数指定する場合はカンマ区切り)'post'
exclude除外する投稿 ID文字列(複数指定する場合はカンマ区切り)''
cat対象のカテゴリー ID文字列(複数指定する場合はカンマ区切り)''
taxonomy対象のタクソノミー文字列'category'
term_id対象の term_id文字列(複数指定する場合はカンマ区切り)''
author対象の投稿者 ID文字列(複数指定する場合はカンマ区切り)''

表示するデータに関するオプション

オプション名説明指定可能な値デフォルト値
title_length取得するタイトルの長さ。0 で制限なし。数値0
title_by_wordsタイトルの長さを文字数ではなく単語数で取得するかどうか。bool0
excerpt_length取得する抜粋の長さ。0 の場合は取得しない。数値0
excerpt_by_words抜粋の長さを文字数ではなく単語数で取得するかどうか。bool0
excerpt_format抜粋に含まれる HTML タグをそのまま取得するかどうか。bool0
rating評価情報を表示するかどうか(WP-PostRatings プラグインを併用している場合に有効)boolfalse
stats_commentsコメントの件数を表示するかどうかboolfalse
stats_viewsPV 数を表示するかどうかbooltrue
stats_author投稿者情報を表示するかどうかboolfalse
stats_date投稿日時を表示するかどうかboolfalse
stats_date_format投稿日時のフォーマット文字列(日付フォーマット)'F j, Y'
stats_categoryカテゴリーを表示するかどうかboolfalse
stats_taxonomyタクソノミーを表示するかどうかboolfalse

HTML 出力に関するオプション

オプション名説明指定可能な値デフォルト値
ajaxify表示に Ajax を使用するかどうかbool1(管理画面の設定で Ajax を無効にしていた場合は 0)
themeプラグインフォルダ内の /assets/themes の中にあるフォルダ名を指定すると、その中にあるスタイルが適用される。文字列''
headerリストの上に表示する見出しの文字列(空で非表示)文字列''
header_start見出しの開始タグ文字列'<h2>'
header_end見出しの終了タグ文字列'</h2>'
thumbnail_widthサムネイルの幅。数値0
thumbnail_heightサムネイルの高さ。数値0
thumbnail_buildプラグイン用のサムネイルを生成するかどうか。'predefined' を指定すると、アイキャッチの画像がそのまま使われる。'manual'
'predefined'
'manual'
wpp_startリストの開始タグ文字列'<ul class="wpp-list">'
wpp_endリストの終了タグ文字列'</ul>'
post_html出力される<li>タグの HTML 構造(使用できる変数については後述)文字列'<li>{thumb} {title} <span class="wpp-meta post-stats">{stats}</span></li>'

post_html で使用できる変数

post_htmlオプションは、出力される<li>タグの HTML のフォーマットをカスタマイズできます。このとき、特定の変数を使うことで、記事のタイトルやURL、サムネイルなどを動的に挿入できます。

変数出力内容
{pid}投稿 ID
{url}記事のURL
{title}記事タイトル(記事のリンク付き)
{title_attr}記事タイトル(テキストのみ)
{text_title}記事タイトル(テキストのみ、title_lengthの設定が反映されたもの)
{thumb}サムネイル画像の<img>タグ(記事のリンク付き)
{thumb_img}サムネイル画像の<img>タグ
{thumb_url}サムネイル画像の URL
{excerpt}記事の抜粋('excerpt_length'が 0 以外の時のみ有効)
{views}記事の PV 数
{comments}記事のコメント数
{date}記事の投稿日時('stats_date'trueの時のみ有効)
{author}投稿者名(アーカイブリンク付き、'stats_author'trueの時のみ有効)
{author_name}投稿者名('stats_author'trueの時のみ有効)
{author_url}投稿者のアーカイブ URL('stats_author'trueの時のみ有効)
{taxonomy}カテゴリー(アーカイブリンク付き、'stats_taxonomy''stats_category'trueの時のみ有効)
{category}{taxonomy}と同じ('stats_taxonomy''stats_category'trueの時のみ有効)
{stats}stats_系のオプションについて、trueになっている項目の情報をまとめて表示。
{item_position}順位。ただし、offsetの指定があったとしても、その分繰り上がるわけではない。
{rating}WP-PostRatings プラグインの評価情報(フォーマットは WP-PostRatings の設定による)
{score}WP-PostRatings プラグインの評価情報(数値のみ)
{total_items}取得した記事の件数
{current_class}同じ投稿 ID のページが表示されている場合は current と出力される。

終わりに

今までなんとなくで使っていましたが、ガッツリ調べてみると知らない設定がたくさんありました。ちなみに、当サイトでは以下のような設定でサイドバーに表示させています。

wpp_get_mostpopular(array(
  'range' => 'monthly',
  'limit' => 5,
  'rating' => true,
  'thumbnail_build' => 'predefined',
  'thumbnail_width' => 320,
  'thumbnail_height' => 168,
  'wpp_start' => '<ul class="sidebar-posts">',
  'post_html' => '<li><a href="{url}" title="{title_attr}"><div class="thumbnail"><img src="{thumb_url}"></div><div class="title">{title_attr}</div></a></li>'
));

サムネイルを生成しないようにできるなんて知りませんでした…。

WordPress の人気プラグイン「WordPress Popular Posts」を使う際は、是非参考にしてみてください。