アクセスが多いWordPressサイトでは、人気記事を表示させる「Wordpress Popular Posts」プラグインを使っていると、ページのアクセスのたびにDBに書き込み・読み込みが発生して負荷がかかる、という指摘を受けたので、Googleアナリティクスから人気記事ランキングを表示させるプラグイン「Simple GA Ranking」を使うことにしました。
標準のままだとランキングの表示に記事のサムネイルが表示されないので、アイキャッチ画像も表示させるようにしてみました。
##コード
プラグインのソースを見たら、以下のapply_filtersがありました。
simple-ga-ranking.php
apply_filters( 'sga_ranking_before_title', '', $id, $cnt )
apply_filters( 'sga_ranking_after_title', '', $id, $cnt )
私の場合はタイトル表示の前にサムネイルを表示させたかったので、sga_ranking_before_titleの方を使うべく、functions.php に以下を追加しました。
functions.php
add_filter('sga_ranking_before_title', 'showRankingImage', 10, 2);
function showRankingImage($ret, $id, $cnt) {
$post_url = get_permalink($id); // 記事のURL
$title = get_the_title($id); //タイトル
$ret = "";
if( has_post_thumbnail( $id ) ) { // アイキャッチ画像の有無
$post_thumb_src = wp_get_attachment_image_src( get_post_thumbnail_id( $id ) );
$post_thumb = $post_thumb_src[0];
$ret = "<a href=\"{$post_url}\" title=\"{$title}\"><img src=\"{$post_thumb}\" alt=\"{$title}\" title=\"{$title}\"></a>";
}
return $ret;
}
プラグインのソースの中を見ると、他にもいくつかフィルターがあったので、色々カスタマイズ出来そうです。