WordPress Popular Postsをカスタマイズ|wpp_custom_html・記事のランキング
WordPressのプラグイン「WordPress Popular Posts」は人気記事一覧(記事のランキング)を簡単に表示することができるプラグイン。
今回は、その「WordPress Popular Posts」で、人気記事一覧を表示する際に、HTMLを変更しカスタマイズして表示する例となります。
WordPress Popular Postsをカスタマイズする例
「WordPress Popular Posts」でHTMLをカスタマイズして表示する今回の例では、次の2つの工程が必要となります。
- フィルターフックwpp_custom_htmlを使い、出力するHTMLをカスタマイズ
- wpp_get_mostpopular()でカスタマイズした人気記事一覧のHTMLを表示
以下、それぞれのソースコードの例となります。
出力するHTMLをカスタマイズ|wpp_custom_html
出力するHTMLをカスタマイズするには、「WordPress Popular Posts」のフィルターフックwpp_custom_htmlを使います。
以下、そのフィルターフックwpp_custom_htmlを使ったカスタマイズの例となり、functions.phpに記述します。
function my_wpp_custom_html( $mostpopular, $instance ){
$output = '<h2>人気記事ランキング</h2>';
$output .= '<ol>';
foreach( $mostpopular as $popular ){
// リンクを取得
$output .= '<li><a href="' . get_the_permalink( $popular->id ) . '"><article>';
// タイトル・アイキャッチ画像・ページビュー数を取得
$output .=
'<p>' . esc_html( $popular->title ) . '</p>' .
get_the_post_thumbnail( $popular->id, 'thumbnail' ) .
'<p>' . esc_html( $popular->pageviews ) . 'views</p>';
// フィールド名「info-field」のカスタムフィールドの値を取得
$custom_fields = get_post_meta( $popular->id, 'info-field', true );
if($custom_fields) {
$output .= '<div>' . esc_html( $custom_fields ) . '</div>';
}
$output .= '</article></a></li>';
}
$output .= '</ol>';
return $output;
}
add_filter( 'wpp_custom_html', 'my_wpp_custom_html', 10, 2 );
フィルターフックwpp_custom_htmlのコールバック関数の第1引数($mostpopular)は、人気記事一覧のオブジェクトを返し、第2引数($instance)は、「widget/shortcode/template tag」からのオプション情報を配列として返します。
例では、foreachループを使用して、第1引数($mostpopular)から取得した値のみを使用し、HTMLをカスタマイズしています。
今回は、第2引数($instance)からは、値を取得しませんでしが、第2引数($instance)を使い、人気記事のデータを取得する条件などによってカスタマイズも可能です。詳しくは以下のリンク先を参考にしてみてください。
人気記事を一覧を表示|wpp_get_mostpopular()
上記でカスタマイズした人気記事の一覧を出力して表示するには、プラグインの独自の関数wpp_get_mostpopular()を使用します。
以下がソースコードの例となり、テンプレートファイル内で、人気記事の一覧を表示させたい場所に記述します。
<?php
if ( function_exists( 'wpp_get_mostpopular' )) {
$arg = array (
// 記事を表示する最大件数
'limit' => 3,
// 集計期間。 daily, weekly, monthly, all のいずれかを指定
'range' => 'weekly',
// ソート順の対象。 views(閲覧数), comments(コメント数), avg(1日の平均)のいずれかを指定
'order_by' => 'views',
// ポストタイプを指定。post, page, などを指定
'post_type' => 'post',
);
wpp_get_mostpopular( $arg );
}
?>
wpp_get_mostpopular関数では、パラメータに指定した条件の人気記事一覧を出力します。
パラメータは、今回の例で使用した以外にもたくさんあり、WordPress管理画面から、『WordPress Popular Posts』の設定画面で確認できます。