[STINGER]記事下の関連記事に兄弟カテゴリも表示するカスタマイズ

STINGERの関連記事に兄弟カテゴリの投稿も表示する

記事に設定されているカテゴリと同じカテゴリの記事を表示してくれるSTINGERの記事下の関連記事一覧。

「兄弟カテゴリも表示出来たらアクセスアップできそうなのに…」と思ったことありませんか?よっひー(@yosiakatsuki)です。

カテゴリの設定の仕方によっては参考になるかもしれないSTINGERの関連記事に兄弟カテゴリの投稿も表示するカスタマイズを紹介します!

STINGERの関連記事に兄弟カテゴリを表示する意味

STINGERの関連記事って記事と同じカテゴリが設定されている記事をランダムに表示する仕様になっているんですよね。

カテゴリの設定の仕方によっては「兄弟カテゴリが設定されている投稿も表示したい!」って場合もあるかと思います。僕がそうでした。

兄弟カテゴリを表示したくなるカテゴリ構成

例えば上のような例が多分「兄弟カテゴリも表示したい」パターンに当てはまってくると思います。

「『塩ラーメン』記事の関連記事に『塩ラーメン』だけ表示していいんか!?」みたいな。

「ラーメン好きなら塩も味噌も醤油も気になるだろがい!」みたいな。

ここらへんはカテゴリの特性と好みの問題なので「何が正解」というのは無いですが、僕と同じように関連記事に兄弟カテゴリも表示したいと思ったことがあるならちょっと参考になるカスタマイズ例かもしれません。

STINGERの関連記事に兄弟カテゴリを表示するカスタマイズ方法

それではカスタマイズ例を紹介していきます。

簡単な親子カテゴリの例

簡単な確認例として、上のようなカテゴリ設定例の記事を参考に表示の確認もしていきます。

関連記事をカスタマイズするために編集するファイル

僕が使っているのがSTINGER5なので、主にSTINGER5で話を進めていきます。

兄弟カテゴリを表示させる為に、STINGER5で記事下の関連記事を制御している「kanren.php」というファイルをカスタマイズしていきます。

(STINGER3ではsingle.phpの66~70行目あたりが今回カスタマイズする部分に相当します。)

※失敗するとページがうまく表示されなくなるので、編集の前には必ずFTPソフト等でファイルのバックアップを取るか、中のコードを丸々コピーして別のファイルにメモっておいて下さい。

できればローカル環境を作成してカスタマイズしたほうが安心です。

関連記事に兄弟カテゴリを表示する為にカスタマイズする場所

まずは編集する場所を押えておきます!

kanren.phpの2〜7行目あたりを編集していきます。(STINGER3ではsingle.phpの66~70行目あたり)

  <?php
$categories = get_the_category($post->ID);
$category_ID = array();
foreach($categories as $category):
array_push( $category_ID, $category -> cat_ID);
endforeach ;
…

ここでは主にページに設定されているカテゴリを抜き出して一覧にしている部分です。

カズタマイズ無しでは同じカテゴリのついた投稿しか表示されない

この状態で子カテゴリ1の投稿を表示すると、関連記事には同じカテゴリの投稿しか表示されません。

カスタマイズ無しだと、記事に設定されているカテゴリしか抜き出しませんが、親カテゴリを取得して、そこから兄弟カテゴリを抜き出せるようにします。

関連記事に兄弟カテゴリを表示するコード

元々あったコードの6行目と7行目の間にコードを追加します。

  <?php
$categories = get_the_category($post->ID);
$category_ID = array();
foreach($categories as $category):
array_push( $category_ID, $category -> cat_ID);
if(($category -> category_parent)!=='0') :
  $brlist = get_term_children(intval($category -> category_parent),'category');
  foreach($brlist as $brcat):
    array_push( $category_ID, $brcat);
  endforeach ;
endif;
endforeach ;
…

ざっくり動きを解説すると、if(($category -> category_parent)!=='0') :で記事に設定されているカテゴリの親カテゴリがあるか確認しています。

親カテゴリがあるなら、その親カテゴリからget_term_childrenで子カテゴリの一覧を取得して、関連記事を取得するためのカテゴリ一覧に追加しています。

兄弟カテゴリの設定された投稿も表示されました

この状態で関連記事を見ると、子カテゴリ1の兄弟カテゴリ「子カテゴリ2」の投稿も表示されています!

コレでバッチリ兄弟カテゴリも表示されてPVアップが期待できますね!

おまけ。親カテゴリも表示する場合

ついでに、兄弟カテゴリだけでなく、親カテゴリも表示する場合、次のハイライトされた1行を追加します。

  <?php
$categories = get_the_category($post->ID);
$category_ID = array();
foreach($categories as $category):
array_push( $category_ID, $category -> cat_ID);
if(($category -> category_parent)!=='0') :
  array_push( $category_ID, $category -> category_parent);
  $brlist = get_term_children(intval($category -> category_parent),'category');
  foreach($brlist as $brcat):
    array_push( $category_ID, $brcat);
  endforeach ;
endif;
endforeach ;
…
親カテゴリも表示されました

関連記事に親カテゴリの投稿も表示されました!

お好みに合わせて使ってみてください。

よっしーのひとこと

よっひー

中身をゴリゴリ変えたのでSTINGERっぽく無くなったかなと思った新テーマですが、内部的にはまだまだSTINGERに助けてもらってます。

まだいくつかSTINGERカスタマイズ記事が書けそうです。(誰が使うかわからないマニアックなやつがね…)

ではまた。