カスタムフィールドで表示している箇所にタグも追加したい

0
いいねをした人: 居ません
  • このトピックには16件の返信、2人の参加者があり、最後にYMにより12時間、 27分前に更新されました。
15件の投稿を表示中 - 1 - 15件目 (全17件中)
  • 投稿者
    投稿
  • #144127
    YM
    参加者
    8

    【お使いの Snow Monkey のバージョン】26.0.3
    【お使いの Snow Monkey Blocks のバージョン】21.0.7
    【お使いの Snow Monkey Editor のバージョン】10.0.4
    【お使いのブラウザ】os
    【当該サイトのURL】https://xs383625.xsrv.jp/

    ### 実現したいこと

    カスタムフィールドで表示している一番下に【タグ】もしくは【特定のカテゴリー】を下記画像のように表示したい

     

    配置希望は下記画像箇所です。

    【結論】
    どのような方法でも問題ので、カスタムフィールドの最後の箇所にタグのような表現で【タグ】もしくは【特定のカテゴリー】を追加して表示させたいです。

    いい方法はありませんでしょうか。
    ご教授いただけますと幸いです。

    ご確認の程よろしくお願い申し上げます。

    ### 発生している問題

    どのように表示するか分からない

    ### 試したこと

    現在は下記コードでカスタムフィールドを追加と表示させている

    
    add_filter(
    	'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title',
    	function ($html) {
    		// カスタムフィールドで設定したフィールド名を代入
    		$acf_name_area = get_field('name_area');
    		$acf_region_area = get_field('region_area');
    		$acf_specialty_genre = get_field('specialty_genre');
    
    		// テンプレートのh3タグの後に <div class="property-info">を追加
    		$acf_property_info = '</h3><div class="property-info">' .
    			'<div class="property-body">' .
    			'<div class="property-content">' .
    			'<dl class="name_area"><span>【代表者名】</span> <dt>'  . esc_html($acf_name_area) . '<dt></dl>' .
    			'<dl class="region_area"><span>【地域】</span> <dt>'  . esc_html($acf_region_area) . '<dt></dl>' .
    			'<dl class="specialty_genre"><span>【取扱業務】</span> <dt>'  . esc_html($acf_specialty_genre) . '<dt></dl>' .
    			'</div>' .
    			'</div>' .
    			'</div>';
    
    		// テンプレートパーツのh3タグの後ろにdivタグを追加する
    		$html = str_replace(
    			'</h3>',
    			$acf_property_info,
    			$html
    		);
    
    		return $html;
    	}
    );
    
    0
    いいねをした人: 居ません
    #144131
    アバター画像キタジマ タカシ
    参加者
    2526

    その記事に紐づく任意のタクソノミーのタームを取得する関数 get_the_terms() を使う形になると思います。

    		// テンプレートパーツのh3タグの後ろにdivタグを追加する
    		$html = str_replace(
    			'</h3>',
    			$acf_property_info,
    			$html
    		);
    
    		// 記事に紐づいている post_tag の各タームのアーカイブページへのリンクを表示する
    		ob_start();
    		$post_tag_terms = get_the_terms( get_the_ID(), 'post_tag' );
    		if ( is_array( $post_tag_terms ) ) {
    			foreach ( $post_tag_terms as $post_tag_term ) {
    				?>
    				<a href="<?php echo esc_url( get_term_link( $post_tag_term ) ); ?>"><?php echo esc_html( $post_tag_term->name ); ?></a>
    				<?php
    			}
    		}
    		$html = $html . ob_get_clean();
    2
    いいねをした人:
    #144132
    YM
    参加者
    8

    キタジマ様

    早速のご教授ありがとうございます。

    下記コードを追加いたしましたが表示されませんでした。

    ちなみにですが、CPT UIでタクソノミーを追加して表示させている記事に紐付けしております。

    記事自体の表示は、「最近の投稿」で投稿タイプを選んでおります。

    
    
    add_filter(
    	'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title',
    	function ($html) {
    		// カスタムフィールドで設定したフィールド名を代入
    		$acf_name_area = get_field('name_area');
    		$acf_region_area = get_field('region_area');
    		$acf_specialty_genre = get_field('specialty_genre');
    
    		// テンプレートのh3タグの後に <div class="property-info">を追加
    		$acf_property_info = '</h3><div class="property-info">' .
    			'<div class="property-body">' .
    			'<div class="property-content">' .
    			'<dl class="name_area"><span>【代表者名】</span> <dt>'  . esc_html($acf_name_area) . '<dt></dl>' .
    			'<dl class="region_area"><span>【地域】</span> <dt>'  . esc_html($acf_region_area) . '<dt></dl>' .
    			'<dl class="specialty_genre"><span>【取扱業務】</span> <dt>'  . esc_html($acf_specialty_genre) . '<dt></dl>' .
    			'</div>' .
    			'</div>' .
    			'</div>';
    
    		// テンプレートパーツのh3タグの後ろにdivタグを追加する
    		$html = str_replace(
    			'</h3>',
    			$acf_property_info,
    			$html
    		);
    
    		return $html;
    
    		// テンプレートパーツのh3タグの後ろにdivタグを追加する
    		$html = str_replace(
    			'</h3>',
    			$acf_property_info,
    			$html
    		);
    
    		// 記事に紐づいている post_tag の各タームのアーカイブページへのリンクを表示する
    		ob_start();
    		$post_tag_terms = get_the_terms(get_the_ID(), 'post_tag');
    		if (is_array($post_tag_terms)) {
    			foreach ($post_tag_terms as $post_tag_term) {
    	?>
    			<a href="<?php echo esc_url( get_term_link( $post_tag_term ) ); ?>"><?php echo esc_html( $post_tag_term->name ); ?></a>
    <?php
    			}
    		}
    		$html = $html . ob_get_clean();
    	}
    );

    `

    お手数おかけいたしますが、ご確認の程よろしくお願い申し上げます。

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

    あ、return した値が画面に表示されるので、最後は return $html; が必要です!

    あとは僕は「タグ」の想定で post_tag を指定するサンプルコードを書きましたが、「タグ」ではないタクソノミーの場合は post_tag のところをそのタクソノミーの名前に書き換えてください。

    1
    いいねをした人:
    #144139
    YM
    参加者
    8

    キタジマ様

    早速のご教授ありがとうございます。

    申し訳ありません、return $html;追加と
    タクソノミーnameが「administrative_scrivener_tag」の為
    下記の様にpost_tagの箇所を「administrative_scrivener_tag」に変更いたしましたが表示されない様です。

    
    add_filter(
    'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title',
    function ($html) {
    // カスタムフィールドで設定したフィールド名を代入
    $acf_name_area = get_field('name_area');
    $acf_region_area = get_field('region_area');
    $acf_specialty_genre = get_field('specialty_genre');
    
    // テンプレートのh3タグの後に
    <div class="property-info">を追加
    $acf_property_info = '
    <div class="property-info">' .
    '
    <div class="property-body">' .
    '
    <div class="property-content">' .
    '
    <dl class="name_area">【代表者名】
     	<dt>' . esc_html($acf_name_area) . '</dt>
     	<dt></dt>
    </dl>
    ' .
    '
    <dl class="region_area">【地域】
     	<dt>' . esc_html($acf_region_area) . '</dt>
     	<dt></dt>
    </dl>
    ' .
    '
    <dl class="specialty_genre">【取扱業務】
     	<dt>' . esc_html($acf_specialty_genre) . '</dt>
     	<dt></dt>
    </dl>
    ' .
    '
    
    </div>
    ' .
    '
    
    </div>
    ' .
    '
    
    </div>
    ';
    
    // テンプレートパーツのh3タグの後ろにdivタグを追加する
    $html = str_replace(
    '
    
    ',
    $acf_property_info,
    $html
    );
    
    return $html;
    
    // テンプレートパーツのh3タグの後ろにdivタグを追加する
    $html = str_replace(
    '
    
    ',
    $acf_property_info,
    $html
    );
    
    return $html;
    
    // 記事に紐づいている post_tag の各タームのアーカイブページへのリンクを表示する
    ob_start();
    $post_tag_terms = get_the_terms(get_the_ID(), 'administrative_scrivener_tag');
    if (is_array($post_tag_terms)) {
    foreach ($post_tag_terms as $post_tag_term) {
    ?>
    <!--?php echo esc_html($post_tag_term->name); ?-->
    <!--?php <br ?--> }
    }
    $html = $html . ob_get_clean();
    return $html;
    }
    );
    

    ご確認いただけますと幸いです。

    お手数おかけいたしますが何卒よろしくお願い申し上げます。

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

    リプライするときに整形されるから?なのかコードが崩れているので整形してみました。

    あと、コードの途中にちゃんとタグの情報が取得できているか確認するために var_dump(...); を追加してみました。ちゃんと取得できているならタグの情報が画面上に表示されるはずです。表示されないなら紐づけができていないか、名前が間違っている可能性がありそうです。

    add_filter(
    	'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title',
    	function ($html) {
    		// カスタムフィールドで設定したフィールド名を代入
    		$acf_name_area = get_field('name_area');
    		$acf_region_area = get_field('region_area');
    		$acf_specialty_genre = get_field('specialty_genre');
    
    		// テンプレートのh3タグの後に <div class="property-info">を追加
    		$acf_property_info = '</h3><div class="property-info">' .
    			'<div class="property-body">' .
    			'<div class="property-content">' .
    			'<dl class="name_area"><span>【代表者名】</span> <dt>'  . esc_html($acf_name_area) . '<dt></dl>' .
    			'<dl class="region_area"><span>【地域】</span> <dt>'  . esc_html($acf_region_area) . '<dt></dl>' .
    			'<dl class="specialty_genre"><span>【取扱業務】</span> <dt>'  . esc_html($acf_specialty_genre) . '<dt></dl>' .
    			'</div>' .
    			'</div>' .
    			'</div>';
    
    		// テンプレートパーツのh3タグの後ろにdivタグを追加する
    		$html = str_replace(
    			'</h3>',
    			$acf_property_info,
    			$html
    		);
    
    		return $html;
    
    		// テンプレートパーツのh3タグの後ろにdivタグを追加する
    		$html = str_replace(
    			'</h3>',
    			$acf_property_info,
    			$html
    		);
    
    		// 記事に紐づいている post_tag の各タームのアーカイブページへのリンクを表示する
    		$post_tag_terms = get_the_terms(get_the_ID(), 'administrative_scrivener_tag');
    		var_dump( $post_tag_terms ); // テスト用
    		ob_start();
    		if (is_array($post_tag_terms)) {
    			foreach ($post_tag_terms as $post_tag_term) {
    				?>
    				<a href="<?php echo esc_url( get_term_link( $post_tag_term ) ); ?>"><?php echo esc_html( $post_tag_term->name ); ?></a>
    				<?php
    			}
    		}
    		$administrative_scrivener_tags = ob_get_clean();
    		var_dump( esc_html( $administrative_scrivener_tags ) ); // テスト用
    
    		$html = $html . $administrative_scrivener_tags;
    		return $html;
    	}
    );
    1
    いいねをした人:
    #144141
    アバター画像キタジマ タカシ
    参加者
    2526

    あ、すみません、今気づいたのですが、最近の投稿ブロックの各項目は a 要素で囲ってあるから、タグにリンクを貼ることはできないですね。HTML の仕様的に a は入れ子にできないので。なのでリンクさせるのはやめてこういう形にしたほうが良いかなと思います。

    <a href="<?php echo esc_url( get_term_link( $post_tag_term ) ); ?>"><?php echo esc_html( $post_tag_term->name ); ?></a>
    

    <span><?php echo esc_html( $post_tag_term->name ); ?></span>
    
    1
    いいねをした人:
    #144142
    YM
    参加者
    8

    早速のご教授とコード整理までありがとうございます。

    下記サイトに仮アップしてみましたが表示されませんでした。

    お名前は添付画像にもあるように合っていると認識しているのですが
    詳しくない為、間違っているのかもしれません。

    度々申し訳ありませんが、ご確認いただけますと幸いです。

    サポートチケットというものを確認いたしました。
    必要でございましたら購入いたしますのでお申し付けください。

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

    サイト&スクショありがとうございます!
    スクショをみた感じ名前はあっていそうです。

    実際にページを見ると、当該箇所に var_dump() で出力されるはずのものが何も出力されていませんでした。まだ var_dump() を追加していないなら追加してみてください。

    とここまで書いて気づきました!コードの途中に return $html; が入っちゃってますね。だからそこで処理が終わって出力されちゃってます。最終行の return $html; だけ残して、途中の return $html; は消してみてください。

    1
    いいねをした人:
    #144145
    YM
    参加者
    8

    早速のご教授ありがとうございます。

    最終行の return $html; だけ残しましたら、取得されているような表示になりました。

    ■こちらを下記画像のように表示したいです。

    ■表示箇所は下記画像の赤丸の箇所に表示させたいです。

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

    var_dump(...) を2個とも消したらどうなりますか?

    1
    いいねをした人:
    #144147
    YM
    参加者
    8

    表示できました!

    有難うございます!

    各タクソノミーに背景など装飾を足したいのですが、classの付与やIDを使用することはできるのでしょうか。

    装飾ができましたらイメージ通りにまります。

    最後までお付き合いいただけますと幸いです。

    0
    いいねをした人: 居ません
    #144150
    YM
    参加者
    8

    お世話になります。

    先程のメッセージが完了と思わせる内容でしたので再送させていただきます。

    ※最後に下記どちらかの方法をご教授をお願いできますと幸いです。

    ①各タクソノミーにclassの付与方法

    ②IDがあるのであれば知りたいです。

    【行いたいこと】

    ①か②を知ることにより各タクソノミーに装飾したい(css)

    ご確認の程よろしくお願い申し上げます。

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

    ①各タクソノミーにclassの付与方法

    この辺は普通の HTML と同じなので、自分がつけたいところに class を追加すれば良いです。例えば。

    <a href="<?php echo esc_url( get_term_link( $post_tag_term ) ); ?>"><?php echo esc_html( $post_tag_term->name ); ?></a>
    

    <a class="administrative-scrivener-tag" href="<?php echo esc_url( get_term_link( $post_tag_term ) ); ?>"><?php echo esc_html( $post_tag_term->name ); ?></a>
    

    ②IDがあるのであれば知りたいです。

    ID というのはどういう意味ですかね…?単純に class と一緒に付与する id 属性ということでしょうか?

    もしそうだとするなら、これも自分で好きな値で id を追加すれば良いです。スラッグは他と被らないはずなので、slug を使うのが良いのではないでしょうか(もしくは term_id)。

    <a id="administrative-scrivener-tag--<?php echo esc_attr( $post_tag_term->slug ); ?>" class="administrative-scrivener-tag" href="<?php echo esc_url( get_term_link( $post_tag_term ) ); ?>"><?php echo esc_html( $post_tag_term->name ); ?></a>
    
    1
    いいねをした人:
    #144158
    YM
    参加者
    8

    キタジマ様

    お忙しい中、ご教授ありがとうございます。

    全て同じclassではなく、それぞれ別のclassを追加することは可能なのでしょうか。

    それともそれば不可能なのでしょうか。

    可能であれば、別々のclassを付与してそれぞれcssを当てたいです。

    0
    いいねをした人: 居ません
15件の投稿を表示中 - 1 - 15件目 (全17件中)
  • トピック「カスタムフィールドで表示している箇所にタグも追加したい」には新しい返信をつけることはできません。

ドキュメント

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

ドキュメント

フォーラム

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

サポートフォーラム

よくあるご質問

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

よくあるご質問

お問い合わせ

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

お問い合わせ

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