特定のカスタム投稿タイプのアーカイブページで、投稿一覧にタグ・ディスクリプションを表示させたい。

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

    【お使いの Snow Monkey のバージョン】 14.3.5
    【お使いの Snow Monkey Blocks のバージョン】 12.0.0
    【お使いの Snow Monkey Editor のバージョン】 6.0.0
    【お使いのブラウザ】 Chrome バージョン: 92.0.4515.107

    いつもSnowMonkey愛用させて頂いております、岡本と申します。
    初めてサポートフォーラムにて質問させて頂きます!よろしくお願いいたします!

    ### 実現したいこと

    カスタム投稿タイプのアーカイブページにて、投稿一覧(リッチメディア型)に、下記画像のように

    ・サムネイル画像
    ・タイトル

    に加えて、投稿の

    ・タグ
    ・ディスクリプション

    を表示させたいと考えています。

    ### 試したこと

    ・任意のタクソノミーの投稿で、カスタムフィールドを表示させたい

    ・投稿ページのページヘッダータイトル下に、Meta descriptionに入力した文字を表示させたい

    上記の2記事を参考に、My SnowMonkeyにコードを書いて、試行錯誤してみた結果、一応内容を出力させることはできたのですが、なぜか全ての文字に投稿ページのリンクが挿入されてしまい、イマイチ上手く出力されません。

    なぜかタイトルのh3がaタグで囲まれてしまっている↓

    多分、というか確実にコードの書き方に問題があると思うので、どうすれば正しく表示されるのか、ご教示頂きたく、質問させて頂きました。

    実際に書いているコードは以下になります↓↓

    
    add_filter(
    	'snow_monkey_template_part_render',
    	function( $html, $slug, $name, $vars ) {
    		if ( 'banso-mate' !== get_post_type() ) {
    			return $html;
    		}
    
    		if ( 'template-parts/loop/entry-summary/title/title' === $slug ) {
    			$title_tag = $vars['_title_tag'];
    			$title = get_the_title();
    			$banso_tags = get_the_term_list($post->ID,'banso_tags',
    '<ul class="smb-taxonomy-terms__list">
     	<li class="smb-taxonomy-terms__item">', '</li>
     	<li class="smb-taxonomy-terms__item">', '</li>
    </ul>'
    			);
    
    			return sprintf(
    				'<%1$s class="c-entry-summary__title">%2$s%3$s</%1$s>
    					<div class="c-entry-summary__tags">
    
    						<%1$s class="c-entry-summary__title">%4$s</%1$s>
    						<div class="smb-taxonomy-terms is-style-tag">%5$s</div>
    					</div>',
    				esc_html( $title_tag ),
    				'名前:',
    				$title,
    				'得意分野:',
    				$banso_tags
    			);
    		} elseif ( 'template-parts/loop/entry-summary/content/content' === $slug ) {
    			$meta_description = get_post_meta( get_the_ID(), 'wp-seo-meta-description', true );
    
    			return sprintf( '<div class="c-entry-summary__content">%1$s</div>', esc_html( $meta_description ) );
    		}
    
    		return $html;
    	},
    	10,
    	4
    );

    一応、以下のような構造で表示されれば、cssで問題なく調整できるのではと考えています。

    <h3>名前:(タイトル)</h3>
    <div>
    	<h3>得意分野:</h3>
    	<div>
    		<ul>
     			<li>タグ</li>
     			<li>タグ</li>
    		</ul>
    	</div>
    </div>

    出力するコードに関して、改善案・ご指摘等ございましたら、ぜひご意見頂けますと幸いです。
    何卒よろしくお願い致します。

    0
    いいねをした人: 居ません
    #82639
    GONSY
    参加者
    841

    岡本優河さん

    もしかしたら、独自のテンプレートで上書きしてしまったほうが早いかもしれません。
    以下にあるように、上書きするためのコードをmy-snow-monkey.phpに追記します。

    カスタム投稿のアーカイブのもとになるテンプレートは、Snow Monkey(テーマ)のtemplate-parts/loop/entry-summary-post.phpだと思いますので、ファイル名を変えて以下のようにします。

    my-snow-monkey
    └override
     └template-parts
      └loop
       └entry-summary-banso-mate.php

    あとは、entry-summary-banso-mate.phpの中身をお好みの構成にする感じでいけると思います。
    お試しください。

    2
    いいねをした人:
    #82658
    まーちゅう
    参加者
    367

    名前と得意分野で、それぞれコードを分けて以下のような感じでどうでしょうか?

    
    /**
     * カスタム投稿タイプのアーカイブページにて、投稿一覧(リッチメディア型)のタイトルの前に、'名前:'を表示
     *
     * @param string $html はコンテンツの中身.
     */
    add_filter(
    	'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title',
    	function ( $html ) {
    		if ( 'banso-mate' !== get_post_type() ) {
    			return $html;
    		}
    		$html = str_replace( '<h3>', '<h3>名前:', $html );
    		return $html;
    	}
    );
    
    /**
     * カスタム投稿タイプのアーカイブページにて、投稿一覧(リッチメディア型)に、タグ・ディスクリプションを表示
     *
     * @param string $html はコンテンツの中身.
     */
    add_filter(
    	'snow_monkey_template_part_render_template-parts/loop/entry-summary/content/content',
    	function ( $html ) {
    		if ( 'banso-mate' !== get_post_type() ) {
    			return $html;
    		}
    		$postid     = get_the_ID();
    		$taxonomy   = 'banso_tags';
    		$post_terms = get_the_terms( $postid, $taxonomy );
    		if ( ! empty( $post_terms ) ) {
    			$tags = '<div>';
    			$tags .= '<h3>得意分野:</h3>';
    			$tags .= '<div>';
    			$tags .= '<ul class="smb-taxonomy-terms__list">';
    			foreach ( $post_terms as $post_term ) {
    				$term_name = $post_term->name;
    				$tags .= '<li class="smb-taxonomy-terms__item">' . $term_name . '</li>';
    			}
    			$tags .= '</div>';
    			$tags .= '</div>';
    		}
    
    		$meta_description = get_post_meta( get_the_ID(), 'wp-seo-meta-description', true );
    		$html = $tags . '<div class="c-entry-summary__content">' .$meta_description. '</div>';
    		return $html;
    	}
    );
    4
    いいねをした人:
    #82894
    noname
    閲覧者
    2

    皆さんご丁寧にご教示頂き、ありがとうございます!

    上記、まーちゅうの方法で、実現することができました!本当に詰まってたので、大変助かります、、

    処理を別で分ける、タグの取得にforeach使うなどの発想がなかったので、とても勉強になります!

    トピック閉じさせて頂きます!ご回答頂き、ありがとうございました!

    1
    いいねをした人:
4件の投稿を表示中 - 1 - 4件目 (全4件中)
  • トピック「特定のカスタム投稿タイプのアーカイブページで、投稿一覧にタグ・ディスクリプションを表示させたい。」には新しい返信をつけることはできません。

ドキュメント

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

ドキュメント

フォーラム

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

サポートフォーラム

よくあるご質問

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

よくあるご質問

お問い合わせ

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

お問い合わせ

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