記事に複数のカテゴリーを登録した場合の優先されるカテゴリー名表示について

  • このトピックには5件の返信、2人の参加者があり、最後に高原淳により1ヶ月、 2週前に更新されました。
6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • 投稿者
    投稿
  • #54939
    高原淳
    参加者
    2

    トピックを新しく立てる方は次の項目も記述してください(要望トピックの場合は不要です)。

    【お使いの Snow Monkey のバージョン】最新版
    【お使いのブラウザ】Google chrome
    【当該サイトのURL】(公開できる場合は書いていただいたほうがスムーズです)

    ===

    snow monkey blocksの任意のタクソノミーの投稿、最近の投稿ブロックについてご質問です。
    カテゴリー名のラベルが右上に表示しますが、記事によってカテゴリーを複数つけている場合、どれかに限定させることは可能でしょうか?

    イメージとしては以下のサイトに似ているページを制作予定なのですが、
    記事1つに対して、ジャンルとエリアのカテゴリーをつけて、記事をカテゴライズするような構造です。


    ◎ジャンル(カテゴリ)
    ・暮らし(サブカテゴリ)〆チェック
    …他

    ◎エリア(カテゴリ)
    ・東京(サブカテゴリ)〆チェック
    …他

    いろいろやってみたのですが、記事によってはジャンル側(暮らし)が表示されたり、エリア側(東京)が表示されたり定まりません。
    カテゴリ名の先頭に数字を含めると優先され、なにか規則があるのかな?と思い、、
    My snow monkeyやフックなどで調整が可能でしたら、教えていただきたいです。

    0
    #54945
    キタジマ タカシ
    キーマスター
    286

    このカテゴリーラベルは、その投稿に紐付いた(カテゴリーを含む)タクソノミーとそのタームを一括取得して、1つめのタームを表示するようになっています。取得順は特に指定していないので、おそらく ABC 順とかになるんじゃないかと思います。

    下記のコードを My Snow Monkey プラグインか子テーマの functions.php に貼り付けてみてください。

    add_filter(
    	'snow_monkey_get_template_part_args',
    	function( $args ) {
    		if ( 'template-parts/loop/entry-summary/term/term' === $args['slug'] && 'post' === $args['name'] ) { // 'post' の部分は投稿タイプ名
    			$_terms = get_the_terms( get_the_ID(), 'category' ); // タクソノミー名を指定
    			if ( $_terms ) {
    				$args['vars']['_terms'] = [ $_terms[0] ];
    			}
    		}
    		return $args;
    	}
    );

    上記は投稿タイプが「post(投稿)」のときに、カテゴリーラベルを「category」に限定するコードです。「post」の部分を任意の投稿タイプ名、「category」のところを任意のタクソノミー名に変更して試してみてください。

    0
    #54947
    高原淳
    参加者
    2

    北島さん

    ご返信ありがとうございます。
    なるほど、このように指定するのですね・・!

    今回、カスタムタクソノミーを使わずに通常の投稿にある「カテゴリー(デフォルト)」のみで対応しようと思っておりまして、
    その場合、ラベルを特定の(チェックした)カテゴリーにしぼることはできますか?

    上記の例ですと、
    ジャンル>暮らし(category/genre/life/)と同時に
    エリア>東京(category/area/tokyo)にチェックをした場合、「東京」を優先して表示させるような感じです。

    こういう複数カテゴリーをつける場合、全てカテゴリー(デフォルト)でやるよりもカスタムタクソノミーを併用して対応したほうがよいでしょうか。
    通常のブログが少し多機能になるサイトでしたので、あまり複雑にならないようにできればなと思いまして。

    0
    #54948
    キタジマ タカシ
    キーマスター
    286

    あ、なるほどです。子カテゴリーになるんですね。ちょっと考えてみます…!

    0
    #54967
    キタジマ タカシ
    キーマスター
    286

    下記に差し替えて試してみてください!

    add_filter(
    	'snow_monkey_get_template_part_args',
    	function( $args ) {
    		if ( 'template-parts/loop/entry-summary/term/term' === $args['slug'] && 'post' === $args['name'] ) { // 'post' の部分は投稿タイプ名
    			$_terms = get_the_terms( get_the_ID(), 'category' ); // タクソノミー名を指定
    			if ( $_terms ) {
    				$term = null;
    				foreach ( $_terms as $_term ) {
    					if ( 2 === $_term->parent ) { // 対象にしたい親カテゴリーの ID を指定
    						$term = $_term;
    						break;
    					}
    				}
    				if ( $term ) {
    					$args['vars']['_terms'] = [ $term ];
    				}
    			}
    		}
    		return $args;
    	}
    );
    0
    #54975
    高原淳
    参加者
    2

    北島さん

    ご指定のコードで確認しましたところ、意図したとおりに表示いたしました!
    ありがとうございます。

    メジャーアップデートも近いなか対応してくださって大変助かりました。感謝いたします。

    余談ですが、先日ありましたMy snow monkeyについての勉強会、YouTubeの方で観ておりました!
    皆様の方法を知れるのは大変貴重なので、非常に興味深くたのしかったです。
    今後も期待しています!

    それではこちらクローズさせていただきます。

    1
6件の投稿を表示中 - 1 - 6件目 (全6件中)
  • トピック「記事に複数のカテゴリーを登録した場合の優先されるカテゴリー名表示について」には新しい返信をつけることはできません。