【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
よく使うパラメータはこのあたりですが、公式のドキュメントにもっと多様なパラメータが載っているのでカスタマイズしたい方はこちらからどうぞ。
2. Template tags
WordPress Popular Posts - A highly customizable WordPress widget that displays your most popular posts. - cabrerahector/wordpress-popular-posts
スクロールできます
パラメータ | パラメータ名 | データ型 | デフォルト | 記載例 |
---|---|---|---|---|
pid | 記事ID(post_id) | Text string | None | With wpp_get_mostpopular():$args = array( ‘pid’ => ’60, 25, 31′ ); wpp_get_mostpopular($args); ?>With the [wpp] shortcode:[wpp pid=’60, 25, 31′] |
cat | カテゴリーID(category_id) | text string | None | With wpp_get_mostpopular():<?php $args = array( ‘cat’ => ‘1, 55, -74’ ); wpp_get_mostpopular($args); ?>With the [wpp] shortcode:[wpp cat=’1, 55, -74′] |
taxonomy | タクソノミーID(taxnomy_id) | Text string | None | With wpp_get_mostpopular():<?php $args = array( ‘taxonomy’ => ‘post_tag’, ‘term_id’ => ‘118, 75, 15’ ); wpp_get_mostpopular($args); ?><?php $args = array( ‘taxonomy’ => ‘category; post_tag’, ‘term_id’ => ‘1, 55, -74; 118, 75, 15’ ); wpp_get_mostpopular($args); ?>With the [wpp] shortcode:[wpp taxonomy=’post_tag’ term_id=’118, 75, 15′][wpp taxonomy=’category; post_tag’ term_id=’1, 55, -74; 118, 75, 15′] |
term_id | タームID(term_id) | Text string | None | With wpp_get_mostpopular():<?php $args = array( ‘taxonomy’ => ‘category’, ‘term_id’ => ‘1, 55, -74’ ); wpp_get_mostpopular($args); ?>With the [wpp] shortcode:[wpp taxonomy=’category’ term_id=’1, 55, -74′] |
author | 著者ID(author_id) | Text string | None | With wpp_get_mostpopular():<?php $args = array( ‘author’ => ‘1, 7’ ); wpp_get_mostpopular($args); ?>With the [wpp] shortcode:[wpp author=’1, 7′] |