【WordPress Popular Posts】 特定のカテゴリーのときだけ、データを取得する対象を複数の子カテゴリーで指定する方法

【WordPress Popular Posts】 特定のカテゴリーのときだけ、データを取得する対象を複数の子カテゴリーで指定する方法

こんにちは。

ゆうや(@yuyaphotograph)です!

この記事では、

  • マサオカブログさんの記事「同じカテゴリの人気記事を表示する」のコードを使っていて、特定のカテゴリーのときだけ、データを取得する対象を複数のカテゴリーに指定したい

という方のお悩みを解決します!

カスタマイズに至った経緯

今回のカスタマイズに至った経緯はこちら。

  1. 親カテゴリーと子カテゴリーがある
  2. 親カテゴリーに属する記事は1つもなく、それぞれの子カテゴリーに属する記事はたくさん公開している
  3. 子カテゴリーの記事が表示されたときの人気記事一覧は正常に表示されるが、親カテゴリーのアーカイブページではデータが取得されず何も表示されない
  4. 表示されないのならば、その親カテゴリーのアーカイブページのときだけ、子カテゴリーの記事を対象にデータを取得させると上手くいくのでは?

上記のような症状で困っている方は以下で紹介する方法で解決できます!

arrayで子カテゴリーIDを指定する

デフォルト状態では、取得するカテゴリーIDを指定する箇所はこうなっていますね。

PHPウィジェット
'cat' => $category_id,

この書き方だと、親カテゴリーアーカイブページを表示しているときは、親カテゴリーの記事情報を取得してしまいますので、arrayを用いて以下のように編集します。

PHPウィジェット
'cat' => array(子カテゴリーID,子カテゴリーID,子カテゴリーID),

簡単ですね。ただarrayの中でカンマ区切りで子カテゴリーIDを書いてやるだけ。

あとは、if文で「アーカイブページかつ特定の親カテゴリーアーカイブページのとき」と「アーカイブページかつ特定の親カテゴリーアーカイブページではないとき」を条件分岐してやればOKです。

このように。

PHPウィジェット
<?php if( is_archive() && is_category('親カテゴリーID') ) : ?>
  <?php $args = array(
    'limit' => 20,//表示数
    'range' => 'all',//集計する期間(weekly,monthly,allasam)
    'order_by' => 'views',//閲覧数で集計、comments(コメント数で集計)、avg(1日の平均で集計))
    'thumbnail_width' => 81,
    'thumbnail_height' => 81,
    'cat' => array(子カテゴリーID,子カテゴリーID,子カテゴリーID),
    'wpp_start' => '<ul class="my-widget show_num">',
    'wpp_end' => '</ul>',
    'stats_views' => 1,//閲覧数表示(1 or 0)
    'stats_comments' => 0,//コメント数表示(1 or 0)
    'post_html' => '<li><a href="{url}"> <figure class="my-widget__img">{thumb_img}</figure><div class="my-widget__text">{text_title} <span class="dfont views"> {stats}</span></div></a></li>' ); ?>
  <?php wpp_get_mostpopular( $args ); ?>
<?php elseif( is_archive() && !is_category('親カテゴリーID') ) : ?>
<?php $args = array(
  'limit' => 20,//表示数
  'range' => 'all',//集計する期間(weekly,monthly,allasam)
  'order_by' => 'views',//閲覧数で集計、comments(コメント数で集計)、avg(1日の平均で集計))
  'thumbnail_width' => 81,
  'thumbnail_height' => 81,
  'cat' => $category_id,
  'wpp_start' => '<ul class="my-widget show_num">',
  'wpp_end' => '</ul>',
  'stats_views' => 1,//閲覧数表示(1 or 0)
  'stats_comments' => 0,//コメント数表示(1 or 0)
  'post_html' => '<li><a href="{url}"> <figure class="my-widget__img">{thumb_img}</figure><div class="my-widget__text">{text_title} <span class="dfont views"> {stats}</span></div></a></li>' ); ?>
<?php wpp_get_mostpopular( $args ); ?>
<?php else: ?>
それ以外のときの内容
<?php endif: ?>

まとめ

以上、WordPress Popular Postsで同じカテゴリーの人気記事一覧をサイドバーに挿入している方向けに、特定のカテゴリーのときだけ、データを取得する対象を複数のカテゴリーに指定する方法を紹介しました。

困っているあなたのお役に立てれば幸いです。

SANGOカスタマイズ記事まとめ

SANGOカスタマイズに役立つ記事まとめ