【WordPress】PopularPostsで特定のtaxnomyを指定したり除外する方法
更新
公開
![]()
目次
WordPressの「Popular Posts」プラグインは人気記事を自動で集計して表示してくれる便利なツールです。
管理画面からは記事 ID やカテゴリー ID で対象を絞れる。 ただし同じ指定を PHP 側で書く方法はまとまった記事が見当たらなかったので、動く形で残しておく。
(基本記述)全期間の投稿ページの閲覧数ランキングを5件表示
<?php
global $post;
$wpp_args = array(
'range' => 'all', //集計する期間 {daily(1日), weekly(1週間), monthly(1ヶ月), all(全期間)}
'order_by' => 'views', //表示順{views(閲覧数),comments(コメント数),avg(1日の平均)}
'post_type' => 'post', //複数の場合は'post, name1, nem2'
'limit' => 5, //表示数
);
$wpp_query = new \WordPressPopularPosts\Query( $wpp_args );
$wpp_posts = $wpp_query->get_posts();
?>
一番良く使う書き方で、投稿ページで一番PVが多いものから降順に5件表示してくれます。期間は1ヶ月にしたりすることもありますが、基本はこの書き方の応用です。
(応用1)1ヶ月のカスタムページの閲覧数ランキング
<?php
$postType = 'hogehoge'; // カスタムページのスラッグ
global $post;
$wpp_args = array(
'range' => 'monthly', //集計する期間 {daily(1日), weekly(1週間), monthly(1ヶ月), all(全期間)}
'order_by' => 'views', //表示順{views(閲覧数),comments(コメント数),avg(1日の平均)}
'post_type' => $postType, //複数の場合は'post, name1, nem2'
'limit' => 5, //表示数
);
$wpp_query = new \WordPressPopularPosts\Query( $wpp_args );
$wpp_posts = $wpp_query->get_posts();
?>
カスタムページを指定する場合は「post_type」の指定を変えることで表示ができます。これによりブログページにセミナーランキングを載せたり、posttypeを横断して表示することが可能になります。
(応用2)1ヶ月のカスタムページの特定のタクソノミー閲覧数ランキング
<?php
$postType = 'hogehoge'; // カスタムページのスラッグ
$taxonomies = 'fugafuga'; // タクソノミーのスラッグ
global $post;
$wpp_args = array(
'range' => 'monthly', //集計する期間 {daily(1日), weekly(1週間), monthly(1ヶ月), all(全期間)}
'order_by' => 'views', //表示順{views(閲覧数),comments(コメント数),avg(1日の平均)}
'post_type' => $postType, //複数の場合は'post, name1, nem2'
'taxonomy' => $taxonomies, // タクソノミーを指定
'term_id' => '10', // タグID
'limit' => 5, //表示数
);
$wpp_query = new \WordPressPopularPosts\Query( $wpp_args );
$wpp_posts = $wpp_query->get_posts();
?>
タクソノミーの指定は「taxonomy」の指定をすることでできます。この場合は「hogehogeのid10がついている記事だけ」でランキングをつくることになります。
反対に特定のterm_idがついているものだけを表示したくない場合は「-10」などマイナスをつけることで除外ができます。
Appendix
よく使うパラメータはこのあたりですが、公式のドキュメントにもっと多様なパラメータが載っているのでカスタマイズしたい方はこちらからどうぞ。
| パラメータ | パラメータ名 | データ型 | デフォルト | 記載例(ショートコード) |
|---|---|---|---|---|
| pid | 記事ID(post_id) | Text string | None | [wpp pid="60, 25, 31"] |
| cat | カテゴリーID(category_id) | Text string | None | [wpp cat="1, 55, -74"] |
| taxonomy | タクソノミー名(taxonomy) | Text string | None | [wpp taxonomy="post_tag" term_id="118, 75, 15"] |
| term_id | タームID(term_id) | Text string | None | [wpp taxonomy="category" term_id="1, 55, -74"] |
| author | 著者ID(author_id) | Text string | None | [wpp author="1, 7"] |
taxonomy と term_id はセミコロンで区切って複数指定できます(例: [wpp taxonomy="category; post_tag" term_id="1, 55, -74; 118, 75, 15"])。wpp_get_mostpopular() を PHP から呼ぶ書き方は、上記の公式ドキュメントを参照してください。
