【WordPress】記事が特定の親カテゴリーに属するかどうか判別する条件分岐プラグイン(カスタム分類も対応)「Is Parent Category」

このサイトを作る過程で「表示中の個別記事のカテゴリーが、特定の親カテゴリー(あるいはカスタム分類の親ターム)に属するかどうかを判別する」ための条件分岐タグが必要になったのですが、WordPressには今のところ、そのような条件分岐タグは存在しないようです。

調べても良い情報が見つからないので、とりあえず自分で適当に作ってみました。いつかどこかの誰かの役に立つかもしれないので、プラグインとして配布したいと思います。WordPressの公式ディレクトリに登録するほどのものでもないので、必要な方は本ページからダウンロードして使ってください。

カスタム分類(カスタムタクソノミー)にも対応しています。ただし、その場合は1つの投稿タイプの記事に対して複数のタクソノミーを持たせているような場合は、そのままではうまく動作しません。後述のカスタマイズを行って各自でコードを書き換えてください。

プラグイン名 Is Parent Category
対応 WordPressバージョン 3.4.0 以上(必須)
バージョン 0.1
作者 フリーソフトラボ.com 管理人
動作確認 WordPress Ver. 5.2.4 / PHP Ver. 7.3.8 にて動作確認済み
ダウンロード こちら

本プラグインの使い方

基本的な使い方

本プラグインをインストール・有効化すると、WordPressテーマの「single.php」「category.php」などのファイル上で以下の条件分岐タグを使用できます。

<?php if( is_parent_category( 6 ) ) : ?>
この記述は、表示中の記事が属するカテゴリーの親カテゴリー ID が「9」のときだけ表示されます。
<?php endif; ?>

<?php if( is_parent_term( 15 ) ) : ?>
この記述は、表示中の記事が属するカスタム分類のタームの親ターム ID が「15」のときだけ表示されます。
<?php endif; ?>

基本的には上記のように記述して使ってください。

ただし、このままでは本プラグインを停止するとサイトを表示したときエラーが出てしまいます。プラグインを停止してもエラーが出ないようにしたい場合は、以下のように記述してください。

<?php if(function_exists(‘is_parent_category’)) : ?>
<?php if( is_parent_category( 6 ) ) : ?>
この記述は、表示中の記事が属するカテゴリーの親カテゴリー ID が「9」のときだけ表示されます。
<?php endif; ?>
<?php endif; ?>

<?php if(function_exists(‘is_parent_term’)) : ?>
<?php if( is_parent_term( 15 ) ) : ?>
この記述は、表示中の記事が属するカスタム分類のタームの親ターム ID が「15」のときだけ表示されます。
<?php endif; ?>
<?php endif; ?>

なお、この条件分岐タグはWordPressの記事のループ内で使用してください。ループの外でも使えますが、その場合はメインループの先頭の記事に関連づけられているカテゴリー(カスタム分類ターム)によって条件分岐の判別が行われます。

カスタム分類で使用する場合に必要かもしれないカスタマイズ

カスタム投稿タイプを使用していて、その投稿タイプの記事に関連づけられたカスタム分類(カスタムタクソノミー)が複数ある場合(たとえば「カテゴリー」「タグ」という2つのカスタム分類をもつとき)は、本プラグインはそのままではうまく動作しません。

以下を参考に、各自サイトのカスタム分類に合うように本プラグインのコードの書き換えを行ってください。

※ デフォルトの「投稿」でカテゴリーとタグを使っている場合は、このカスタマイズは必要ありません。無視してそのまま使ってください。

$post_terms = get_the_terms($post->ID,$my_taxonomy_name[0]);
if ( $post_terms[0]->term_id == $parent || $post_terms[0]->parent == $parent || term_is_ancestor_of( $parent, $post_terms[0]->parent, $my_taxonomy_name[0] ) ) {

WordPressのプラグインエディターを開いて、本プラグインのコードの21~22行目の赤字になっている部分を、以下のように親タームを判別したいカスタム分類(カスタムタクソノミー)の名前に書き換えてください。

$post_terms = get_the_terms($post->ID,‘taxonomy_name’);
if ( $post_terms[0]->term_id == $parent || $post_terms[0]->parent == $parent || term_is_ancestor_of( $parent, $post_terms[0]->parent, ‘taxonomy_name’ ) ) {

注意事項など

本プラグインの仕様

・本プラグインは、基本的には1つの記事に対して1つのカテゴリー(またはカスタム分類のターム)が割り当てられている場合のみを考慮して作ったものです。それ以外の場合での動作は、今後のアップデートで考えるかもしれません。

・記事のカテゴリーが、判別対象となる親カテゴリーの子カテゴリーになっている場合だけでなく、子孫カテゴリー(孫カテゴリー、ひ孫カテゴリー…etc.)になっている場合でもOKです。

・1つの記事に複数のカテゴリーが割り当てられていて、且つそれらのカテゴリー全てが共通の親カテゴリーを持つ場合はOKです。

・1つの記事に複数のカテゴリーが割り当てられていて、且つそれらのカテゴリーがそれぞれ別の親カテゴリーに属する場合は、本プラグインをご使用いただけません。

・本プラグインを停止する場合、本プラグインによる条件分岐タグ(is_parent_categoryまたはis_parent_term)をテーマに記述したままにしているとエラーが出ます。必ず該当部分の条件分岐タグを削除してからプラグインを無効にしてください(上述の「本プラグインの使い方」を参照)。

利用規約

・本プラグインのダウンロード・使用によって生じたいかなる損害についても、本プラグインの提供者である当サイトならびに当サイト管理人は一切の責任を負いません。

・本プラグインのコードをブログなどに掲載したり、本プラグインを二次配布したい場合は、当該ページから本ページへのリンクを掲載した場合のみ可能とします。

・二次配布に際して、当サイトダウンロードリンクへの直リンクは厳禁です。ご自分のサイトのサーバーにアップロードして配布してください。

更新履歴

日付 バージョン 概要
2019/11/03 0.1 プラグイン公開

スポンサーリンク

スポンサーリンク

このページの先頭へ