新潟県妙高市|ホームページと広告の相談相手

妙高Web屋

お仕事のご依頼お見積りのご依頼

WordPress

特定のカテゴリ&そのサブカテゴリに条件を適用したい場合の記述方法【WordPress】

2019.3.29

特定のカテゴリ&そのサブカテゴリに条件を適用したい場合の記述方法【WordPress】
WordPress 0 0
妙高Web屋LINE@ 友だち追加

WordPressでテンプレートファイルを編集していると、「特定のカテゴリーの場合にこのような処理をする」というコードを記述することは多くあります。

それに関連して、ときどき、

「特定のカテゴリーと、そのサブカテゴリー(子カテゴリー)に属する場合に処理を実行する」

のようなコードが必要になる場合もあります。

投稿のカテゴリーのIDが分かっていれば「カテゴリーIDが1,2,3の場合は…」のように1個1個カテゴリーIDを指定してPHPで分岐を作ることで対処できますが、カテゴリーが追加された場合や、カテゴリーの構成が変更になった場合はPHPの処理を変更する必要が発生するので、カテゴリーの種類が多いホームページほど作業が大変です。

そこで、今回の記事では「特定のカテゴリー&そのサブカテゴリー(子カテゴリー)に条件を適用したい場合の記述方法」をご紹介します。

この記事の目次

【結論その1】特定のカテゴリー&そのサブカテゴリーに属するアーカイブ系ページの場合の処理

まずは、カテゴリーアーカイブなどのアーカイブ系のページで、特定のカテゴリーとそのサブカテゴリーに属する場合の処理はこちらです。

$specific = '10';
$cat = get_the_category();
$parent_id = $cat[0]->category_parent;
if (is_category($specific)||$parent_id == $specific) {
// IDが10であるカテゴリーと、そのサブカテゴリーに属する場合の処理を記述
}

ページの先頭へ戻る

【結論その2】特定のカテゴリー&そのサブカテゴリーに属する個別記事(single.php)の場合の処理

次に、[single.php]のような個別記事が特定のカテゴリーおよびそのサブカテゴリーに属する場合の処理はこちらです。

1:関数を[functions.php]に記述する

まず、下記の関数を[functions.php]の末尾に記述します。

function post_is_in_descendant_category($cats, $_post = null){
foreach ((array) $cats as $cat) {
$descendants = get_term_children((int) $cat, 'category');
if ($descendants && in_category($descendants, $_post))
return true;
}
return false;
}

2:個別記事のテンプレートに下記のコードを記述する

次に、[single.php]の好きな箇所に、下記のコードを記述します。

$specific = '10';
if (in_category($specific) || post_is_in_descendant_category($specific)) {
// IDが10であるカテゴリーと、そのサブカテゴリーに属する場合の処理を記述
}

これでいかがでしょうか?

なお、特定のカテゴリを示している変数[$specific]は、ご希望のカテゴリーIDに応じて自由に編集してみてください。

ページの先頭へ戻る

参考サイト

こちらの記事を作成するにあたり、こちらのページを参考にさせていただきました。

ありがとうございました。

ページの先頭へ戻る

こちらの記事に感想をお寄せください

こちらの記事をご覧いただき、感じたことなどありましたら下記のボタンを押していただき「感想投稿フォーム」よりお気軽にご感想をお寄せください。

この記事の感想を投稿する
妙高Web屋LINE@ 友だち追加
0 0

LINE@始めました!

妙高Web屋ではこのたび、LINE@(ラインアット)を始めることとなりました。

企業やお店のWeb担当者さまへ向けて、ホームページの運営・管理・更新に関する情報を発信していきます。

情報を購読できる「友だち」へのご登録は、下記のボタンよりお願いいたします。

目的のページは見つかりましたか?

お探しのページが見当たらない場合は、キーワードを手がかりに、サイト内検索をご利用ください。

または、下記のボタンより「サイトマップ」のページにアクセスしていただき、お探しください。

目的のページは見つかりましたか?
Twitterでシェアする Twitterでシェアする Facebookでシェアする Facebookでシェアする Feedlyで購読する Feedlyで購読する お問い合わせお問い合わせ ページの先頭へページの先頭へ