WordPress Popular Postsのレイアウトをカスタマイズ
WordPressでブログ内の人気記事を表示するプラグイン、Popula Postsですが、決まった形にしかレイアウト出来なくて、不便だったので自分好みにカスタマイズしてみました!
こちらの記事を参考にさせていただきました。
カスタマイズ方法
Popular Postsをインストール後、有効化したらfunctions.phpに下記を追記します。
add_image_size( 'tmb', 200, 134, true ); //アイキャッチのサイズを指定 function popular_post(){ echo wpp_get_mostpopular($args); } function custom_single_popular_post( $content, $p, $instance ){ $thumb_id = get_post_thumbnail_id( $p->id ); //アイキャッチのID取得 $img = wp_get_attachment_image_src( $thumb_id, 'tmb' ); //アイキャッチ取得 $output = ' <li> <a class="zoom" class="zoom" href="' . get_the_permalink($p->id) . '"> <div class="media"><img src="' . $img[0] . '" alt="' . esc_attr($p->title) . '"></div> <div> <time datetime="' . $p->date . '">' . date('Y.m.d', strtotime($p->date)) . '</time> <p>' . $p->title . '</p> </div> </a> </li> '; return $output; } add_filter( 'wpp_post', 'custom_single_popular_post', 10, 3 );
1行目はアイキャッチ画像のサイズを指定しています。
お好みでサイズを変更してください。
そして、10〜18行目までをお好みに変更します。
$p->idが記事のIDですので、get_the_permalink($p->id)、とすることで記事のパーマリンクを取得しています。
最後に人気記事を表示したいところへ下記を記述します。
<?php wpp_get_mostpopular( $args ); ?>;
おまけ:SNS Count Cacheのシェア数も表示する
さらにSNS Count CacheというプラグインでSNSでシェアされた数を表示したかったので、下記のように変更してみました。変更したのは10行目、17行目です。
add_image_size( 'tmb', 200, 134, true ); //アイキャッチのサイズを指定 function popular_post(){ echo wpp_get_mostpopular($args); } function custom_single_popular_post( $content, $p, $instance ){ $thumb_id = get_post_thumbnail_id( $p->id ); //アイキャッチのID取得 $img = wp_get_attachment_image_src( $thumb_id, 'tmb' ); //アイキャッチ取得 $scc = scc_get_share_total( array( 'post_id' => $p->id ) ); $output = ' <li> <a class="zoom" class="zoom" href="' . get_the_permalink($p->id) . '"> <div class="media"><img src="' . $img[0] . '" alt="' . esc_attr($p->title) . '"></div> <div> <time datetime="' . $p->date . '">' . date('Y.m.d', strtotime($p->date)) . '</time> <span><i class="fa fa-heart" aria-hidden="true"></i>' . $scc . '</span> <p>' . $p->title . '</p> </div> </a> </li> '; return $output; } add_filter( 'wpp_post', 'custom_single_popular_post', 10, 3 );
普通のループ内なら、scc_get_share_total()で取得できるのですが、ここでは10行目で記事のIDを指定しています。
以上で当ブログの一番下にある「人気の記事」のように出力されます。
Writer
KO
誕生日に会社のみんなから『世界文学全集』をプレゼントしてもらった読書好きフロントエンド・エンジニアです。WordPressとMovableTypeが得意ですが、本当の特技は薪割りです。