カスタム投稿タイプのタグ表示

1
Who liked:
  • このトピックには16件の返信、4人の参加者があり、最後にマドカにより3年、 11ヶ月前に更新されました。
15件の投稿を表示中 - 1 - 15件目 (全17件中)
  • 投稿者
    投稿
  • #62501
    マドカ
    閲覧者
    7

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

    【お使いの Snow Monkey のバージョン】最新版
    【お使いのブラウザ】Chrome
    ===

    いつもありがとうございます。

    現在、構築中のサイトで、「Custom Post Type UI」を使ったカスタム投稿タイプを設定しています。
    そこで、2点ご質問があります。

    1)通常の投稿サイトと同じように、カスタム投稿においても、タグ(階層なし)を記事詳細ページに表示させることは可能でしょうか? (現時点ではカスタム投稿ではタグが表示されていません。)
     ※カテゴリーと同様に記事のトップにもってくる方法は、既出フォーラムの内容を参照させていただきます。

    2)アーカイブページの一覧表示で、各記事に付与されているタグ情報についても、日付・著者情報と同様に表示させることは可能でしょうか?

    お忙しいところ大変恐縮ですが、何か方法があればご教授いただけますと幸いです。
    どうぞよろしくお願いいたします。

    0
    Who liked: No user
    #62504
    Olein_jp
    参加者
    565

    こんにちは!

    仕様の詳しい内容はわからないので、推測できる範囲でまずは書いてみます。

    1)通常の投稿サイトと同じように、カスタム投稿においても、タグ(階層なし)を記事詳細ページに表示させることは可能でしょうか? (現時点ではカスタム投稿ではタグが表示されていません。)

    まず、「タグ」というものが指しているのが「投稿に使っているタグ」なのか「カスタムタクソノミー 」を用意されて使うものなのかにもよって若干変わってきます。

    「投稿に使っているタグ」であれば、カスタム投稿タイプの記事詳細ページでも普通に表示されるはずです。そして、「カスタムタクソノミー 」も何もせず出力されたような気がします…(未確認

    2)アーカイブページの一覧表示で、各記事に付与されているタグ情報についても、日付・著者情報と同様に表示させることは可能でしょうか?

    日付・著者情報部分にタグ情報を出力する際には、フックでカスタマイズしないといけないという記憶があります。通常はサムネイル右上など(通常カテゴリーなどが表示される場所)に出力されるはずなので…

    @キタジマタカシ さんの登場を待ちましょうかね…w

    0
    Who liked: No user
    #62533
    マドカ
    閲覧者
    7

    オレインさん、早々のご返信をありがとうございます!!!

     

    まず、「タグ」というものが指しているのが「投稿に使っているタグ」なのか「カスタムタクソノミー 」を用意されて使うものなのかにもよって若干変わってきます。

     
    添付画像の下部、赤丸で示したようなタグを指しているのですが、この場合は「投稿に使っているタグ」になるのでしょうか。
    カスタム投稿タイプでも、「Custom Post Type UI」でカテゴリーおよびタグを設定できるようにしたのですが、タグについては画像のように表示されない状態です(カテゴリーは表示されます)。
    WordPressカスタマイズの知識が乏しく大変恐縮ですが、解決策があれば大変ありがたいのです。。

     

    日付・著者情報部分にタグ情報を出力する際には、フックでカスタマイズしないといけないという記憶があります。通常はサムネイル右上など(通常カテゴリーなどが表示される場所)に出力されるはずなので…

     
    ありがとうございます!!
    もしカスタマイズできる策があればご教授いただけると大変うれしいです。
    キタジマさんのご登場を待つようにいたします・・・!(お忙しいでしょうにいつも申し訳ない限りです(汗))

    0
    Who liked: No user
    #62541
    Olein_jp
    参加者
    565

    添付画像の下部、赤丸で示したようなタグを指しているのですが、この場合は「投稿に使っているタグ」になるのでしょうか。

    こちらですが、

    「Custom Post Type UI」でカテゴリーおよびタグを設定できるようにしたのですが、タグについては画像のように表示されない状態です(カテゴリーは表示されます)。

    Custom Post Type UIのカスタム投稿タイプ設定画面最下部で、「タクソノミー 」という部分があるのですが、そこで「カテゴリー (WP コア)」や「タグ (WP コア)」を選ばれているのであれば、「投稿」と同じカテゴリーやタグを併用することになります。

    ですので、添付画像の赤丸部分は通常では「選択されたタグ」が表示されるので、カスタムタクソノミーを作られていないのであれば「タグ(WPコア)」ということになりそうですね。ちなみにタイトル下に表示されている「お知らせ」がカテゴリーになるかと思います。

    その上で、「タグ(WPコア)」をタイトル下の日付や投稿者情報部分に追って表示させたいのか、カスタムタクソノミー を別途Custom Post Type UIで作成して、そちらを表示されたいのかで、方法も変わってくるかと思われます!

    0
    Who liked: No user
    #62561
    マドカ
    閲覧者
    7

    お忙しいなかありがとうございます!

    Custom Post Type UIのカスタム投稿タイプ設定画面最下部で、「タクソノミー 」という部分があるのですが、そこで「カテゴリー (WP コア)」や「タグ (WP コア)」を選ばれているのであれば、「投稿」と同じカテゴリーやタグを併用することになります。

    上記に関しては、「WPコア」ではなく、カスタム投稿タイプで設定したカテゴリーやタグを選択しております。
    なので、「カスタムタクソノミー」を表示させたい、ということになりそうです!

    「カスタムタクソノミー」も通常は何もせず表示されるものなのでしょうか。
    であれば、私の設定何かしらおかしいことになりそうですね。。

    0
    Who liked: No user
    #62706
    アクツ
    参加者
    167

    andmさんこんにちは!

    カスタムタクソノミーの場合は、タグ形式でもカテゴリー形式でも、コンテンツのメタ情報の部分に載ってしまうのが正しい挙動かと思います。
    (私も同現象になりました)

    ひとまずタグ欄にタグ出す方法はわかったので共有します(ほぼslackでキタジマさんがいってたのをコード化しただけですw)

    add_filter(
    	'snow_monkey_get_template_part_args_template-parts/content/entry/entry',
    	function( $args ) {
    		if ( is_singular('{カスタム投稿名}') ) {
    			$args['vars']['_display_tags'] = TRUE;
    		}
    		return $args;
    	}
    );
    
    add_filter(
    	'snow_monkey_get_template_part_args_template-parts/content/entry-tags',
    	function( $args ) {
    		if ( is_singular('{カスタム投稿名}') ) {
    			$args['vars']['_terms'] = get_the_terms( get_the_ID(), '{カスタムタクソノミーslug}' );
    		}
    		return $args;
    	}
    );
    4
    Who liked:
    #62707
    アクツ
    参加者
    167

    一番良さそうな形か微妙ですが、特定のタクソノミーを投稿のmeta情報から除外する方法もできたのでシェアしておきます(^^;

    
    add_action( 'after_setup_theme', 'my_remove_action' );
    function my_remove_action() {
    	remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_categories' , 40);
    }
    
    function ignore_tag_tax_entry_meta_items() {
    	$public_taxonomies = Helper::get_the_public_taxonomy( get_the_ID() );
    	$public_terms = [];
    
    	//特定のタクソノミーを除外する
    	if ( is_singular ('{カスタム投稿名}') ) {
    		unset ( $public_taxonomies['{カスタムタクソノミーslug}'] );
    	}
    
    	foreach ( $public_taxonomies as $public_taxonomy ) {
    		$_terms = get_the_terms( get_the_ID(), $public_taxonomy->name );
    		if ( ! empty( $_terms ) && is_array( $_terms ) && ! is_wp_error( $_terms ) ) {
    			$public_terms = $_terms;
    			break;
    		}
    	}
    
    	if ( ! $public_terms ) {
    		return;
    	}
    	?>
    	<?php foreach ( $public_terms as $public_term ) : ?>
    		<li class="c-meta__item c-meta__item--categories">
    			<span class="screen-reader-text"><?php echo esc_html( $public_taxonomy->label ); ?></span>
    			<i class="fas fa-folder" aria-hidden="true"></i>
    			<a href="<?php echo esc_url( get_term_link( $public_term ) ); ?>"><?php echo esc_html( $public_term->name ); ?></a>
    		</li>
    	<?php endforeach; ?>
    	<?php
    }
    add_action( 'snow_monkey_entry_meta_items', 'ignore_tag_tax_entry_meta_items', 40 );
    
    1
    Who liked: No user
    #62711
    マドカ
    閲覧者
    7

    アクツさんへ
    Slackとこちらの方にもお返事いただきまして、本当にありがとうございます!!!

    ひとまずタグ欄にタグ出す方法はわかったので共有します(ほぼslackでキタジマさんがいってたのをコード化しただけですw)

    コード共有ありがとうございます!
    早速試してみまして、無事にカスタム投稿でもタグが表示されました!
    本当にありがとうございます(涙)!大変助かりました!!!

    一番良さそうな形か微妙ですが、特定のタクソノミーを投稿のmeta情報から除外する方法もできたのでシェアしておきます(^^;

    これについていまいち理解できておらず非常に申し訳ないのですが、、このままだとmeta側に何らかの不要な表示がされてしまうため消す必要があるということでしょうか・・?(理解が追いついておらず申し訳ないです・・)

     

    キタジマさんへ
    最初に質問させていただいておりました1点めは解決しましたので、2点めのアーカイブ一覧表示の際に(現時点ではカスタム投稿のアーカイブ一覧)、タグ情報(カスタムタクソノミー)を表示させることが可能かどうかご教授いただけますと幸いです(添付画像のようなイメージです)。

    見た目はCSSでいじるので、ひとまず表示だけできるようにしたいなと思うのですが、何らかの手段がありますでしょうか・・?

    お忙しいところ大変申し訳ありません・・
    明日以降のお時間あるときで構いませんので、ご確認いただけますと幸いです!
    いつも本当にありがとうございます。

    1
    Who liked: No user
    #62731
    アクツ
    参加者
    167

    マドカさん
    度々のご確認とご返答ありがとうございます(*^_^*)

    2つ目に提示した方のコード(一番良さそうな形か微妙ですがの方)ですが、このコードでやれば動くのはできるかと思います(特に追加で何か処理書き足すとかはなくて大丈夫)

    が、WordPressさんに「この場合はここはタグ表示しないようにしてね!」とWordPressさんにお願いする説明が効率の良い作業の手順で説明できてない可能性があるといった状態です(´;ω;`)

    これでOK!!みたいなコード出せずでかえって混乱な形になってしまってごめんなさい!!

    0
    Who liked: No user
    #62798
    アバター画像キタジマ タカシ
    参加者
    2421

    @アクツさん

    カスタムタクソノミーの場合は、タグ形式でもカテゴリー形式でも、コンテンツのメタ情報の部分に載ってしまうのが正しい挙動かと思います。

    あ、記事タイトル下のところに、タグ形式のタクソノミーがでちゃうこともあるってことですよね(複数タクソノミーが割り当てられている場合はどちらかのタクソノミーが表示)。挙動的にはバグっちゃバグですね…^^; 投稿の場合はカテゴリーだけなので、カスタム投稿のときもカテゴリー形式のタクソノミーだけが表示されるのが正しい気がします。これはちょっと修正入れます。

    一番良さそうな形か微妙ですが、

    Snow Monkey がわざわざ Helper::get_the_public_taxonomy( get_the_ID() ); で投稿に紐付いた全タクソノミー情報をとっているのは、Snow Monkey からはどのタクソノミーを表示すれば良いのか判断ができないからなので、カスタマイズで自分の好きなタクソノミーだけを表示したいときは get_the_terms() で好きなタクソノミーを取得すれば良いです。書き直すとこんな感じでしょうか。

    カスタム投稿 news、カスタムタクソノミー news_category の場合

    add_action(
    	'snow_monkey_prepend_contents',
    	function() {
    		// カスタム投稿のときにメタ情報のカテゴリー表示を無効化
    		if ( is_singular( 'news' ) ) {
    			remove_action( 'snow_monkey_entry_meta_items', 'snow_monkey_entry_meta_items_categories', 40 );
    		}
    
    		// カスタム投稿のときにメタ情報を表示
    		// カスタマイザーでビューテンプレートを「投稿」にしている場合は不要
    		if ( is_singular( 'news' ) ) {
    			add_filter(
    				'snow_monkey_get_template_part_args_template-parts/content/entry/entry',
    				function( $args ) {
    					$args['vars']['_display_entry_header'] = true;
    					$args['vars']['_post_type'] = 'post';
    					return $args;
    				}
    			);
    		}
    
    		// カスタム投稿のときに任意のタクソノミーをメタ情報に表示
    		if ( is_singular( 'news' ) ) {
    			add_action(
    				'snow_monkey_entry_meta_items',
    				function() {
    					$terms = get_the_terms( get_the_ID(), 'news_category' );
    					if ( ! is_array( $terms ) ) {
    						return;
    					}
    					?>
    					<?php foreach ( $terms as $term ) : ?>
    						<li class="c-meta__item c-meta__item--categories">
    							<span class="screen-reader-text"><?php echo esc_html( $terms->label ); ?></span>
    							<i class="fas fa-folder" aria-hidden="true"></i>
    							<a href="<?php echo esc_url( get_term_link( $term ) ); ?>"><?php echo esc_html( $term->name ); ?></a>
    						</li>
    					<?php endforeach; ?>
    					<?php
    				},
    				40
    			);
    		}
    	}
    );
    2
    Who liked: No user
    #62800
    アバター画像キタジマ タカシ
    参加者
    2421

    @マドカさん

    最初に質問させていただいておりました1点めは解決しましたので、2点めのアーカイブ一覧表示の際に(現時点ではカスタム投稿のアーカイブ一覧)、タグ情報(カスタムタクソノミー)を表示させることが可能かどうかご教授いただけますと幸いです

    カスタム投稿 news、カスタムタクソノミー news_category とした場合は下記のコードで表示できます。
    注意点として、一覧ページでの各投稿はまるごとリンク(a タグ)で囲まれていて、a の中に a は入れ子にできないので、タグ表示にリンクを付けることはできません(厳密にはつけることはできますがもうひと手間必要になります)。下記はとりあえずタグをリンクなしで表示する方法です。

    add_action(
    	'snow_monkey_get_template_part_template-parts/loop/entry-summary/content/content-news',
    	function() {
    		$terms = get_the_terms( get_the_ID(), 'news_category' );
    		if ( ! is_array( $terms ) ) {
    			return;
    		}
    		?>
    		<?php foreach ( $terms as $term ) : ?>
    			<?php echo esc_html( $term->name ); ?>
    		<?php endforeach; ?>
    		<?php
    	}
    );
    0
    Who liked: No user
    #62821
    マドカ
    閲覧者
    7

    キタジマさん
    年末&アップデート時期のご多忙な折にお返事いただきまして、本当にありがとうございます!
    上記で共有いただいたコード内の「content-news」と「news_category」を、該当のカスタム投稿(works)・カスタムタクソノミー(works_tag)に書き換えて試してみたのですが、カスタム投稿のアーカイブ一覧で何も表示に変化がおきず、コード上にも特に変化なしでした。原因がよくわからず、こちらの設定に問題があるのかもしれませんが・・

    試行錯誤して以下のコードを試してみまして、アーカイブ一覧にカスタムタクソノミーを表示することはできた(添付画像参照)のですが、この方法でも問題ないものでしょうか・・?
    マズイ表記やもっとスマートな書き方があるかと思いますので、お時間あるときにでもみていただければ大変幸いです・・!

    add_action(
    	'snow_monkey_prepend_contents',
    	function() {
    		if ( is_archive( 'works' ) ) {
    			add_action(
    				'snow_monkey_get_template_part_template-parts/loop/entry-summary/meta/meta',
    				function() {
    					?>
    					<?php
    					if ($terms = get_the_terms($post->ID, 'works_tag')) {
    						foreach ( $terms as $term ) {
    							$term_slug = $term -> slug;
    							$term_id = $term -> term_id;
    							echo ('<span class="tag-cloud-link tag-link-') ;
    							echo esc_html($term_id) ;
    							echo ('">') ;
    							echo esc_html($term->name)  ;
    							echo ('</span>') ;
    						}
    					}
    					?>
    					<?php
    				}
    			);
    		}
    	}
    );

    0
    Who liked: No user
    #62836
    アバター画像キタジマ タカシ
    参加者
    2421

    あ、カスタマイザーでカスタム投稿のビューテンプレートを「投稿」にされていますかね? もしかしたらそれだと僕の書いたコードだと効かないかもです。マドカさんのコードでも全然問題ないと思います! 一応僕ならこうしたほうが見やすいかな?というのも書いておきますね。

    add_action(
    	'snow_monkey_prepend_contents',
    	function() {
    		if ( ! is_archive( 'works' ) ) {
    			return;
    		}
    
    		add_action(
    			'snow_monkey_get_template_part_template-parts/loop/entry-summary/meta/meta',
    			function() {
    				$terms = get_the_terms( $post->ID, 'works_tag' );
    				if ( ! $terms ) {
    					return;
    				}
    				?>
    				<?php foreach ( $terms as $term ) : ?>
    					<span class="tag-cloud-link tag-link-<?php echo esc_html( $term->term_id ); ?>"><?php echo esc_html( $term->name ); ?></span>
    				<?php endforeach; ?>
    			}
    		);
    	}
    );
    1
    Who liked: No user
    #62846
    アクツ
    参加者
    167

    キタジマさん

    改善コードと解説ありがとうございます!
    いらないものを消すしか頭になくて、作り直すがまったく思い浮かんでなかったです

    meta情報にでてしまうのひょっとしたら、階層ありタクソノミーだけかもと今思ってきました
    (検証というか確認不足で申し訳ないです)
    のちほど、再度検証してみます!

    0
    Who liked: No user
    #62871
    アクツ
    参加者
    167

    (連続レスですみません!)
    やはりタグ形式(階層なしタイプのタクソノミー)でも、metaにでてました。
    当たり前ですが、複数タクソノミーがある場合は、一番最初に宣言されたタクソノミーがmetaにでてきてます

    0
    Who liked: No user
15件の投稿を表示中 - 1 - 15件目 (全17件中)
  • トピック「カスタム投稿タイプのタグ表示」には新しい返信をつけることはできません。

ドキュメント

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

ドキュメント

フォーラム

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

サポートフォーラム

よくあるご質問

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

よくあるご質問

お問い合わせ

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

お問い合わせ

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