【WordPress Popular Posts】人気記事の条件によりHTMLの出力を変更するカスタマイズ

WordPressのプラグイン『WordPress Popular Posts』は人気記事一覧(記事のランキング)を簡単に表示することができるプラグイン。
今回は、人気記事のデータを取得する条件により、それぞれ異なったHTMLのソースコードで、人気記事一覧を表示させるカスタマイズとなります。
人気記事を取得する条件によってHTMLを変更する例
今回の例では、同じページ内の任意の2箇所に、記事の最大件数とHTMLが異なる人気記事一覧を表示します。
また、HTMLを変更してして表示するには、次の2つの工程が必要となります。
- フィルターフックwpp_custom_htmlを使い、出力するHTMLを変更
- wpp_get_mostpopular()で変更した人気記事一覧のHTMLを表示
以下、それぞれのソースコードの例となります。
フックwpp_custom_htmlで条件によりHTMLを変更
出力するHTMLを変更するには、フィルターフックwpp_custom_htmlを使用します。例では、表示する記事の最大件数によって、出力するHTMLを変更しています。
以下がソースコードとなり、functions.phpファイルに記述します。
function my_popular_posts( $mostpopular, $instance ){
$output = '<h2>人気記事ランキング</h2>' ;
$output .= '<ol>' ;
foreach( $mostpopular as $popular ) {
$ID = $popular->id;
$output .= '<li><a href="' . get_the_permalink( $ID ) . '">';
$output .= '<p class="entry-title">' . esc_html( $popular->title ) . '</p>';
// 記事を表示する最大件数が3の場合
if ($instance['limit'] == '3') {
$output .= '' . get_the_post_thumbnail( $ID, 'thumbnail' ) .'';
}
$output .= '</a></li>';
}
$output .= '</ol>' ;
return $output;
}
add_filter( 'wpp_custom_html', 'my_popular_posts', 10, 2 );
コールバック関数の引数について
フィルターフックwpp_custom_htmlのコールバック関数の第1引数($mostpopular)は、人気記事一覧のオブジェクトを返し、第2引数($instance)は、人気記事一覧のオプション情報を配列として返します。
上記ソースコードでは、第2引数($instance)から、'limit'の値(記事を表示する最大件数の値)を取得し、その値が3の場合とそれ以外の場合でHTMLの出力を変更しています。
今回は、第2引数($instance)から、'limit'の値を取得しましたが、取得できる情報は多岐にわたります。詳しくは、var_dump関数や文末の参考サイト内で確認してみてください。
wpp_get_mostpopular() のパラメータを指定し、異なる人気記事の一覧を表示
人気記事一覧を出力するには、wpp_get_mostpopular関数を使います。そして、データを取得する条件を指定するには、関数のパラメータを使用します。
例では、同じページ内の任意の2箇所に、表示する記事の最大件数が異なる人気記事一覧を表示します。
以下がソースコードとなり、人気記事の一覧を表示させたいそれぞれの場所に記述します。
記事を取得する最大件数が3件の例
<?php
if ( function_exists( 'wpp_get_mostpopular' )) {
$arg = array (
// 記事を表示する最大件数
'limit' => 3,
// ポストタイプを指定。post, page, などを指定
'post_type' => 'post',
);
wpp_get_mostpopular( $arg );
}
?>
記事を取得する最大件数が6件の例
<?php
if ( function_exists( 'wpp_get_mostpopular' )) {
$arg = array (
// 記事を表示する最大件数
'limit' => 6,
// ポストタイプを指定。post, page, などを指定
'post_type' => 'post',
);
wpp_get_mostpopular( $arg );
}
?>
フィルターフックwpp_custom_htmlと、wpp_get_mostpopular関数を使用したカスタマイズについては、以下のリンク先も参考にしてみてください。