最近の投稿でのカテゴリーラベルの表示順について

0
いいねをした人: 居ません
10件の投稿を表示中 - 1 - 10件目 (全10件中)
  • 投稿者
    投稿
  • #126348
    shima
    参加者
    2

    【お使いの Snow Monkey のバージョン】20.2.2
    【お使いの Snow Monkey Blocks のバージョン】19.6.0
    【お使いの Snow Monkey Editor のバージョン】9.2.5
    【お使いのブラウザ】Chrome
    【当該サイトのURL】

    ### 実現したいこと

    最近の投稿でのカテゴリーラベルの表示順を親→子→孫の順番で表示したい。

    ### 発生している問題

    こちらの記事を参考にカテゴリーを複数表示していますが、表示順を親→子→孫にしたいです。

    親カテゴリーは一番上にきますが、子と孫の順番が混ざってしまっている状況です。

    My Snow Monkeyに書き込む形で解決できればと思っていますが可能でしょうか?

    0
    いいねをした人: 居ません
    #126435
    アバター画像キタジマ タカシ
    参加者
    2422

    なんか汎用的なコードを書くの難しそうな気がしますね…僕の実力的に。ちょっと下記教えてください。

    – 記事のカテゴリーへのチェックは、親、子、孫、全部にチェックを付けていますか?それとも孫だけですか?
    – 全ての記事が親、子、孫に属していますか? それとも親だけの記事や親、子までの記事もあったりしますか?

    0
    いいねをした人: 居ません
    #126513
    shima
    参加者
    2

    ありがとうございます。

     

    – 記事のカテゴリーへのチェックは、親、子、孫、全部にチェックを付けていますか?それとも孫だけですか?

    →親、子、孫、全部にチェックをつけています。

     

    – 全ての記事が親、子、孫に属していますか? それとも親だけの記事や親、子までの記事もあったりしますか?

    →親だけ、親、子までの記事もあります。

    0
    いいねをした人: 居ません
    #126599
    アバター画像キタジマ タカシ
    参加者
    2422

    なるほどです。

    もしチェックしているカテゴリーが末端のカテゴリーにだけ(例:親・子・孫チェックではなく孫のみチェック、親・子チェックではなく子のみチェック)なら get_ancestors() で先祖のカテゴリーも一括取得できるのでなんとかできそな気がします。

    全部にチェックする方式ではなくて末端のカテゴリーにだけチェックする運用に変えることって可能でしょうか?

    0
    いいねをした人: 居ません
    #126600
    shima
    参加者
    2

    ありがとうございます!

    末端カテゴリーのみにチェックを変える事も可能です。

    よろしくお願いします。

    1
    いいねをした人:
    #126619
    アバター画像キタジマ タカシ
    参加者
    2422

    末端カテゴリーのみにチェックを変える事も可能です。

    末端カテゴリーのみにチェックした場合の想定でコードを書いてみました。

    add_filter(
    	'snow_monkey_get_template_part_args',
    	function( $args ) {
    		// 記事一覧カテゴリー以外のテンプレートの場合は無視
    		if ( 'template-parts/loop/entry-summary/term/term' !== $args['slug'] ) {
    			return $args;
    		}
    
    		// 投稿以外の場合は無視
    		if ( 'post' !== $args['name'] ) {
    			return $args;
    		}
    
    		$terms = get_the_terms( get_the_ID(), 'category' );
    		if ( $terms ) {
    			// チェックしたカテゴリーを元にその先祖カテゴリーを取得
    			$term      = $terms[0];
    			$term_ids  = get_ancestors( $term->term_id, 'category', 'taxonomy' );
    
    			// チェックしたカテゴリーと先祖のカテゴリー情報をカテゴリーラベルとして使用
    			$new_terms = array();
    			foreach ( $term_ids as $term_id ) {
    				$new_terms[] = get_term( $term_id, 'category' );
    			}
    			krsort( $new_terms );
    			$new_terms[]            = $term;
    			$args['vars']['_terms'] = $new_terms;
    		}
    
    		return $args;
    	}
    );
    5
    いいねをした人:
    #126622
    shima
    参加者
    2

    ありがとうございます。

    こちらコードで親、子、孫の順にカテゴリーラベルの表示ができました!

    ただ、下記のようなに、孫カテゴリーの複数にチェックを入れた場合、孫が一つしか表示されません。

    日本(親)

    → 東京(子)

    → ✅新宿区(孫)、✅渋谷区(孫)、✅目黒区(孫)

     

    ラベルの表示は日本 東京 新宿

     

    親カテゴリ、子カテゴリ、孫カテゴリ(チェックがある場合複数表示)で表示することは可能でしょうか?

    0
    いいねをした人: 居ません
    #126624
    アバター画像キタジマ タカシ
    参加者
    2422

    こんな感じでどうですかね?

    add_filter(
    	'snow_monkey_get_template_part_args',
    	function( $args ) {
    		// 記事一覧カテゴリー以外のテンプレートの場合は無視
    		if ( 'template-parts/loop/entry-summary/term/term' !== $args['slug'] ) {
    			return $args;
    		}
    
    		// 投稿以外の場合は無視
    		if ( 'post' !== $args['name'] ) {
    			return $args;
    		}
    
    		$new_terms = array();
    		$terms     = get_the_terms( get_the_ID(), 'category' );
    		foreach ( $terms as $term ) {
    			$term_ids = get_ancestors( $term->term_id, 'category', 'taxonomy' );
    			krsort( $term_ids );
    
    			// チェックしたカテゴリーと先祖のカテゴリー情報をカテゴリーラベルとして使用
    			foreach ( $term_ids as $term_id ) {
    				$new_terms[ $term_id ] = get_term( $term_id, 'category' );
    			}
    			$new_terms[ $term->term_id ] = $term;
    		}
    		$args['vars']['_terms'] = $new_terms;
    
    		return $args;
    	}
    );
    1
    いいねをした人:
    #126629
    shima
    参加者
    2

    ありがとうございます!

    希望の表示ができました!

     

    こちらのコードでしたら、末端カテゴリーのみにチェックではなく、全てチャック入れてもラベル表示は親、子、孫で表示できました!

    1
    いいねをした人:
    #126631
    アバター画像キタジマ タカシ
    参加者
    2422

    良かったです!
    一応重複が出ないようなコードにしたのですが、処理自体は重複して実行されるので個人的には末端のみチェック推奨です。

    1
    いいねをした人:
10件の投稿を表示中 - 1 - 10件目 (全10件中)
  • トピック「最近の投稿でのカテゴリーラベルの表示順について」には新しい返信をつけることはできません。

ドキュメント

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

ドキュメント

フォーラム

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

サポートフォーラム

よくあるご質問

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

よくあるご質問

お問い合わせ

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

お問い合わせ

Snow Monkey は Gutenberg ブロックエディターに対応した 100%GPL の WordPress テーマです。拡張性を意識した開発をおこなっており、カスタマイザーとブロックでスピーディーにサイトを立ち上げるだけでなく、CSS やフックを駆使した高度なカスタマイズにも柔軟に対応できます。