サポート » テーマ » 記事に含まれている子カテゴリーの中からランダムで1つ表示したい

  • 解決済 tarotaro1192

    (@tarotaro1192)


    記事に含まれている子カテゴリを表示させたいと思い、フォーラムで調べましたところ

    <?php
    $cats = get_the_category();
    foreach($cats as $cat):
    if($cat->parent) echo $cat->cat_name ;
    endforeach;
    ?>

    このように小カテゴリを表示させる方法を拝見致しました。
    これですと登録されている子カテゴリ全てを表示するようになっております。
    多い時は子カテゴリが10個以上登録してあり、スマホメインのサイトですので文章が伸びてしまうと見栄えが悪くなってしまうこともあり、子カテゴリの中からランダムで1つだけ表示させたいと考えております。

    欲を言ってしまうと、最近子カテゴリを付けるようになりましたので過去の記事が親カテゴリだけで上記の方法が通用しません。子カテゴリが登録してない場合は、親カテゴリを表示させるという条件分岐も付け加えたいのですが、どなたか分かる方はいらっしゃいますでしょうか?よろしくお願いいたします。

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

    <?php
    		$childs	= array();
    		$cats	= get_the_category();
    
    		foreach ( $cats as $cat ) {
    
    			if ( $cat->parent > 0 ) {
    
    				$childs[]	= $cat;
    			} else {
    
    				$parents[]	= $cat;
    			}
    		}
    
    		$childs_count	= count( $childs );
    		$parents_count	= count( $parents );
    
    		if ( ! empty( $childs_count ) ) {
    
    			// 子カテゴリの中からランダムで1つ
    			$random_selected = rand( 0, $childs_count - 1 );
    
    			printf( ' random selected child: %1$s', esc_html( $childs[ $random_selected ]->cat_name ) );
    		} elseif ( ! empty( $parents_count ) and empty( $childs_count ) ) {
    
    			//子カテゴリがなければ、親カテゴリを一つ
    			printf( ' %1$s', esc_html( $parents[0]->cat_name ) );
    		}
    ?>

    コードは、b-quoteでなくcodeで表示してください 🙂

    望みどおりの事が出来ました。本当にありがとうございます!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「記事に含まれている子カテゴリーの中からランダムで1つ表示したい」には新たに返信することはできません。