【WordPress】Popular Postsの出力をカスタマイズして任意の場所に表示する
人気記事をランキング表示するためのプラグインWordPress Popular Posts。大変便利なのですが、リスト表示時にサムネイル画像を出力すると、画像にリンク<a><img></a>
が設定されてしまいます。
スマホからの操作を考えると、<a>
タグをブロックにした<li><a>….画像、タイトル….</a></li>
としたいところです。
以下、Popular Postsの<li>
タグ内を自由にカスタイマイズする方法です。
フィルターフックを利用したカスタマイズ
<li>
タグ内の表示をカスタマイズするのでwpp_post
をフックし、表示の定義をしていきます。
以上でリスト表示のカスタイマイズは完了です。ただ、このままだと管理画面でも同様に反映されてしまいます。今回は$p->pageviews
でview数を取得していないので、管理画面でview数が確認できません。管理画面で従来通りに表示するために、上記のコードを修正します。
これで、管理画面では従来通りのシンプルなリスト、Blog上ではカスタマイズしたリストが表示されるようになりました。
ユーザー定義関数でテンプレート内に表示
続いて、サイドバーやフッターなど、任意の場所に表示させるための関数を書いていきます。
Popular Posts を関数化する
先ほどカスタマイズしたリストを簡単に呼び出す関数を定義します。
関数の呼び出し
表示したいテンプレート内で以下のコードを書くことで、任意の場所に表示できるようになります。
wp-adminフォルダをアクセス制限していると、カウントされない
集計に/wp-admin/admin-ajax.phpを使用しているので、wp-adminフォルダに.htaccessでアクセス制限している場合、うまくカウントされません。/wp-admin/.htaccessを以下のようにすることで正常にカウントがされます。
wpp_get_mostpopular だけでカスタマイズ可
この記事の公開後、プラグインをよく見てみると{thumb_img}
というimgタグのみ出力するタグを発見しました。wpp_post
をフックしなくても、wpp_get_mostpopular()
だけでカスタイマイズが可能です。
function get_my_popular_posts($limit = 5, $range = 'all', $thumbnail_size = 150)
{
if (function_exists('wpp_get_mostpopular')) {
wpp_get_mostpopular([
'limit' => $limit,
'range' => $range,
'order_by' => 'views',
'post_type' => 'post',
'stats_comments' => 0,
'stats_author' => 0,
'stats_date' => 0,
'stats_views' => 0,
'stats_date_format' => 'y.m.d',
'thumbnail_width' => $thumbnail_size,
'thumbnail_height' => $thumbnail_size,
'wpp_start' => '<section class="popular-posts"><h1 class="title">Popular posts</h1><ol class="popular-posts-list">',
'wpp_end' => '</ol></section>',
'post_html' =>
'<li>
<a href="{url}" title="{text_title}">
<div class="thumbnail">
{thumb_img}
</div>
<div class="content">
<p class="title">{text_title}</p>
<p class="meta">{date}</p>
</div>
</a>
</li>'
]);
}
}