Snow Monkey Blocks 「任意のタクソノミーの投稿」にて親カテゴリー→子カテゴリーという形で出力させるための処理

0
いいねをした人: 居ません
  • このトピックには2件の返信、2人の参加者があり、最後にOlein_jpにより1年、 5ヶ月前に更新されました。
3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • 投稿者
    投稿
  • #73032
    Olein_jp
    参加者
    464

    【お使いの Snow Monkey のバージョン】 14.0.3
    【お使いの Snow Monkey Blocks のバージョン】 11.0.3
    【お使いの Snow Monkey Editor のバージョン】 5.0.1
    【お使いのブラウザ】 Mac Chrome
    【当該サイトのURL】

    ### 実現したいこと
    Snow Monkey Blocks「任意のタクソノミーの投稿」で任意のタクソノミーの記事一覧を表示させる際に、通常だと子カテゴリーだけの表示になるのですが、

    1. 親カテゴリー
    2. 子カテゴリー
    3. (存在する場合には)孫カテゴリー

    という順で出力をさせてたいと模索しています。

    ### 発生している問題

    add_filter(
    	'snow_monkey_get_template_part_args_template-parts/loop/entry-summary/term/term',
    	function( $args ) {
    		if ( 'post' !== $args['name'] ) {
    			return $args;
    		}
    
    		$_terms = get_the_terms( get_the_ID(), 'category' );
    
    		if ( $_terms ) {
    			$_term = $_terms[0];
    			if ( 0 !== $_term->parent ) {
    				// ここからどううまいことやってあげたらいいのかがわからない…
    			}
    		}
                    ・・・
    		return $args;
    	}
    );

    ### 試したこと
    上記のように試しているのですが、スマートなカテゴリ並び替えをどう実装するべきか、みなさんの英知をお貸しくださいませ!

    0
    いいねをした人: 居ません
    #73037
    キタジマ タカシ
    参加者
    1696

    複数カテゴリーがチェックしてある場合など、実際の運用状況を考慮するともうちょっと調整が必要だと思いますが、ざっくりこんな感じですかねー。

    add_filter(
    	'snow_monkey_get_template_part_args_template-parts/loop/entry-summary/term/term',
    	function( $args ) {
    		if ( 'post' !== $args['name'] ) {
    			return $args;
    		}
    
    		$_terms = get_the_terms( get_the_ID(), 'category' );
    		$new_terms = [];
    
    		foreach ( $_terms as $_term ) {
    			$ancestors = get_ancestors( $_term->term_id, 'category' );
    			if ( $ancestors ) {
    				$ancestors = array_reverse( $ancestors );
    				foreach ( $ancestors as $ancestor_id ) {
    					$new_term = get_term( $ancestor_id, 'category' );
    					if ( ! is_wp_error( $new_term ) ) {
    						$new_terms[ $ancestor_id ] = $new_term;
    					}
    				}
    				$new_terms[ $_term->id ] = $_term;
    			}
    		}
    
    		$args['vars']['_terms'] = $new_terms ? $new_terms : $_terms;
    
    		return $args;
    	}
    );
    0
    いいねをした人: 居ません
    #73042
    Olein_jp
    参加者
    464

    なるほど。

    タームを foreach して、その中で ancestor をリバースして 新しいタームに入れる…。この発想までいけてませんでしたー!ありがとうございます!

    走らせて検証してみます!一旦閉じます!

    0
    いいねをした人: 居ません
3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • トピック「Snow Monkey Blocks 「任意のタクソノミーの投稿」にて親カテゴリー→子カテゴリーという形で出力させるための処理」には新しい返信をつけることはできません。

ドキュメント

Snow Monkey の設定方法やマニュアルを掲載しています。

ドキュメント

フォーラム

Snow Monkey の使い方やカスタマイズについてのご質問・ご要望等はサポートフォーラムで行っています。サポートフォーラムは誰でも閲覧できますが、書き込みできるのは Snow Monkey 購入者のみとなります。

サポートフォーラム

よくあるご質問

Snow Monkey のサービスについて不明な点がある場合は、まずはよくあるご質問をご確認ください。

よくあるご質問

お問い合わせ

よくあるご質問を見ても解決しなかった場合、試用版の申請については問い合わせフォームからお願いいたします。

お問い合わせ