サポート » 使い方全般 » get_the_categoryで特定のカテゴリを除外するコードの書き方

  • 解決済 amachang

    (@amachang)


    ソースの冒頭にまとめて以下のようにコードを書いています。

    <?php
    	$category = get_the_category();
    	$cat_id   = $category[0]->cat_ID;
    	$cat_name = $category[0]->cat_name;
    	$cat_slug = $category[0]->category_nicename;
    ?>

    そして、例えばスラッグを表示させる所に以下のように記述しています。
    <?php echo $cat_slug; ?>

    これだけですと、複数カテゴリに属する場合に問題があるのですが、どのように記述すればよろしいでしょうか?除外したいカテゴリは複数あります。

    ご教示頂けますと幸いです。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • こんにちは

    除外するカテゴリ ID の配列を指定する方法ではどうでしょうか。
    下記コードは、除外するカテゴリ ID の配列を指定できる、get_the_category ライクな関数です。

    functions.php 等に

    function my_get_the_category( $id = false, $exclude = array() ) {
    	$cats = get_the_category( $id );
    	$excluded_cats = array();
    	foreach( $cats as $cat ) {
    		if ( !in_array( $cat->cat_ID, $exclude ) ) {
    			$excluded_cats[] = $cat;
    		}
    	}
    	return $excluded_cats;
    }

    使い方

    <?php my_get_the_category( false, array( 1, 2 ) ); ?>

    • この返信は7年、 3ヶ月前にishitakaが編集しました。理由: 誤記
    トピック投稿者 amachang

    (@amachang)

    ishitaka様

    さっそくのご回答ありがとうございます。
    続けてお尋ねしてもよろしいでしょうか?

    <?php
    	$category = get_the_category();
    	$cat_id   = $category[0]->cat_ID;
    	$cat_name = $category[0]->cat_name;
    	$cat_slug = $category[0]->category_nicename;
    ?>
    <?php my_get_the_category( false, array( 1, 2 ) ); ?>

    という風に記述したのですが、除外されていないようです。
    書き方が違いますでしょうか?

    get_the_category の代わりに、my_get_the_category を定義してこれを利用するという構成のはずですよ。

    functions.php あたりに下記を書いて、my_get_the_category 関数を使えるようにした上で、

    function my_get_the_category( $id = false, $exclude = array() ) {
    	$cats = get_the_category( $id );
    	$excluded_cats = array();
    	foreach( $cats as $cat ) {
    		if ( !in_array( $cat->cat_ID, $exclude ) ) {
    			$excluded_cats[] = $cat;
    		}
    	}
    	return $excluded_cats;
    }

    <?php
    	$category = my_get_the_category(false, array(1, 2));
    	$cat_id   = $category[0]->cat_ID;
    	$cat_name = $category[0]->cat_name;
    	$cat_slug = $category[0]->category_nicename;
    ?>

    みたいな使い方じゃないでしょうか。

    トピック投稿者 amachang

    (@amachang)

    kimipooh様

    ご教示ありがとうございます!
    できました!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「get_the_categoryで特定のカテゴリを除外するコードの書き方」には新たに返信することはできません。