サポート » 使い方全般 » 所属カテゴリ取得時の順番

  • 解決済 AkitoiRo

    (@dona0513)


    お世話になっております。

    現在

    <?php
    $str = '';
    foreach((get_the_category()) as $cat){
    	if($cat->parent) {
    	$str .= $cat->cat_name ;
    }}
    if ($str) {
    echo rtrim($str);
    }
    ?>

    にて所属カテゴリを表示しているのですが、順番がバラバラになります。

    例 先祖,親,現在位置
    と表示したいのですが、親と先祖が入れ替わったりします。

    こちらを先祖,親,現在位置順に固定する事はできますでしょうか?

    宜しくお願い致します。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • CG

    (@du-bist-der-lenz)

    カテゴリーの名前、カテゴリーのIDの順序で取得していませんか

    一旦配列に格納してから foreach で吐くのが一番早いと思います。

    自分の作ったテーマでそんなような実装をしてるので見てみてください。

    https://github.com/Mirucon/coldbox/blob/master/functions.php#L556

    それでも分からなければご一報ください。

    プログラムコードが書けずコピペで実装しているのですが

    カテゴリタイトル>先祖>親>現在

    とあり、カテゴリタイトルは出力せず

    先祖>親>現在

    をテキストのみで順番通り出力したいのですが
    どのように書けばいいのかわかりません。


    カテゴリ
    美容院>東京都>港区>南青山
    表示
    東京都港区南青山

    現在の上記のように表示したいです。

    何かヒントでもよろしいのでお願い致します。

    上で紹介したコードから必要そうな部分を抜き出すとこんな感じになります。テストはしてないのでもしかすると細かいところでエラーはあるかもです。

    
    <?php
    $cat = get_the_category();
    $current_cat = get_the_category();
    if ( $cat -> parent ) { // 親カテゴリーがある時
    	$parent = array();
    	while ( $cat -> parent ) {
    		$cat = get_category( $cat -> parent ); // 親カテゴリーがある間データを取得
    		$cat_name = $cat -> name; // 親カテゴリー名を取得
    		$parent = array_merge( // 親カテゴリーを配列に格納
    			$parent, array(
    				$cat_name,
    			)
    		);
    	}
    	$parent_rev = array_reverse( $parent ); // 配列の順番をひっくり返す
    	foreach ( $parent_rev as $key ) {
    		echo esc_html( $key ); // 親カテゴリーを出力
    	}
    }
    echo $current_cat; // 現在のカテゴリーを出力
    

    無事動作いたしました。
    ありがとうございました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「所属カテゴリ取得時の順番」には新たに返信することはできません。