-
投稿者検索結果
-
2025年2月19日 2:57 PM #144140
返信が含まれるトピック: カスタムフィールドで表示している箇所にタグも追加したい
リプライするときに整形されるから?なのかコードが崩れているので整形してみました。
あと、コードの途中にちゃんとタグの情報が取得できているか確認するために
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; } );
2025年2月19日 2:09 PM #144139返信が含まれるトピック: カスタムフィールドで表示している箇所にタグも追加したい
キタジマ様
早速のご教授ありがとうございます。
申し訳ありません、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いいねをした人: 居ません2025年2月19日 9:35 AM #144132返信が含まれるトピック: カスタムフィールドで表示している箇所にタグも追加したい
キタジマ様
早速のご教授ありがとうございます。
下記コードを追加いたしましたが表示されませんでした。
ちなみにですが、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いいねをした人: 居ません2025年1月28日 10:14 AM #143737返信が含まれるトピック: 投稿アーカイブに投稿タグや任意の要素を追加表示したい
まーちゅうさん、キタジマさん、ありがとうございました!
無事に希望通りの出力ができました。
この snow_monkey_pre_template_part_render_{slug} フィルターフック、今までいまいち使い方を理解できてなくてこれを使う発想にならなかったんですが、今回ご紹介いただいてようやく腹落ちしました。
もう少しコードは整理するかもですが、このような感じで出力できることを確認しました。
/** * entry-summaryのタイトルの前にタグを追加する * * @param $html テンプレートパーツの出力HTML * @param $name テンプレートパーツの名前 * @param $vars テンプレートパーツのリクエスト配列 */ add_filter( 'snow_monkey_pre_template_part_render_template-parts/loop/entry-summary/title/title', function( $html ) { $tags = get_the_tags(); $title = '<h3 class="c-entry-summary__title">' . esc_html( get_the_title() ) . '</h3>'; if ( $tags ) { $tags_list = '<div class="c-entry-summary__tag">'; foreach ( $tags as $tag ) { $tags_list .= '<span>' . esc_html( $tag->name ) . '</span>'; } $tags_list .= '</div>'; $html = $tags_list . $title . $html; } return $html; }, 10 );
2025年1月27日 5:24 PM #143726返信が含まれるトピック: 投稿アーカイブに投稿タグや任意の要素を追加表示したい
snow_monkey_template_part_render_<slug>
snow_monkey_pre_template_part_render_<slug>
のどちらかのフィルターフックを使用されてはどうでしょうか?/** * @param $html テンプレートパーツの出力HTML * @param $name テンプレートパーツの名前 * @param $vars テンプレートパーツのリクエスト配列 */ add_filter( 'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title', function( $html ) { $html = str_replace( '書き換え前の文字列', '書き換え後の文字列', $html ); return $html; }, 10 );
/** * @param $html テンプレートパーツの出力HTML * @param $name テンプレートパーツの名前 * @param $vars テンプレートパーツのリクエスト配列 */ add_filter( 'snow_monkey_pre_template_part_render_template-parts/loop/entry-summary/title/title', function( $html ) { return 'New HTML'; }, 10 );
2024年9月28日 4:14 PM #141931返信が含まれるトピック: 既存のパンくずの機能をアーカイブなどのループの中で各投稿に利用する方法
調査してみたところ、2つの要因がありました。
1つ目は、Snow Monkey のパンくずはページのクエリを参照してリストを生成しているということです。例えば、詳細ページ用のリストはページが
is_single()
のときに生成され、アーカイブページ用のリストはページがis_archive()
のときに生成されます。ループの中だとしてもページのクエリはis_arhive()
がtrue
になるので、アーカイブページ用のリストが出力されてしまう、ということになります。2つ目は、Snow Monkey のパンくずは一度生成したリストをキャッシュするようになっているので、↑の対策をしたとしてもキャッシュされたパンくずを出力してしまうために同じリストが繰り返し表示されてしまうということです。
上記2つに対して対策してみたコードが下記になります。
/** * ループのメタ情報部分にパンくずを追加する。 */ add_filter( 'snow_monkey_template_part_render_template-parts/loop/entry-summary/meta/meta', function( $html ) { query_posts( array( 'p' => get_the_ID() ) ); // これが重要。クエリを記事用に再生成する。 ob_start(); \Framework\Helper::get_template_part( 'template-parts/common/breadcrumbs' ); $breadcrumbs = ob_get_clean(); wp_reset_query(); // クエリをもとに戻す return $html . $breadcrumbs; } ); /** * パンくずを都度生成するようにする。 */ add_filter( 'snow_monkey_get_template_part_args_template-parts/common/breadcrumbs', function( $args ) { $breadcrumbs = new \Inc2734\WP_Breadcrumbs\Bootstrap(); $breadcrumbs_items = $breadcrumbs->get(); // $breadcrumbs_items = apply_filters( 'snow_monkey_breadcrumbs', $breadcrumbs_items ); // 必要ならコメントアウト $args['vars']['_items'] = $breadcrumbs_items; return $args; } );
なんとなくあんまりきれいな処理ではない気がするので、気になるようなら自作したほうが良いかもしれません…。
♥ 0いいねをした人: 居ません2023年9月16日 9:44 PM #131151返信が含まれるトピック: 固定ページに、特定のカテゴリー記事を表示したい。
なるほどです。
PHPのコード追加が必要なのかなぁとボンヤリ思いつつ、
そうですね、Snow Monkey に機能としては無いので PHP を書く必要はでてきちゃいますね。とりあえず簡単そうな方法を。カテゴリーページの抜粋部分を本文に書き換えるコードです。My Snow Monkey プラグインか子テーマの
functions.php
に追加してみてください。add_filter( 'snow_monkey_pre_template_part_render_template-parts/loop/entry-summary/content/content', function( $html ) { if ( is_category( 'ここにカスタマイズしたいカテゴリーアーカイブのスラッグを記述' ) ) { ob_start(); ?> <div class="u-entry-content"> <?php the_content(); ?> </div> <?php return ob_get_clean(); } return $html; } );
カテゴリーページではなく固定ページに表示させたい場合は、記事の一覧を表示させるショートコードかなにか作って対応する形になります。でもそれだと Shortcodes Ultimate とやってることは実質的に同じだと思うので、それなら Shortcodes Ultimate でも良いかもしれません。
2023年9月4日 1:09 AM #130575返信が含まれるトピック: 「最近の投稿」で1個目のみレイアウトを変えたい&ボタンを入れたい
無事表示できました!
ありがとうございます!
カスタマイズコードを共有しておきます。
add_filter( 'snow_monkey_pre_template_part_render_template-parts/loop/entry-summary', function ($html, $name, $vars) { // 最近の投稿ブロック以外の場合は処理しない if ($vars['_context'] !== 'snow-monkey-blocks/recent-posts') { return $html; } // var_dump( $vars['_entries_id'] ); // _entries_id が 1e51cf05-27b1-4623-a80a-737f90e68664 以外のときは処理しない if ($vars['_entries_id'] !== '37975860-b3a3-4ea7-ae82-7e91ebb7a69a') { // clientId かアンカー名が入る return $html; } ob_start(); ?> <div> <div> <figure> <?php if (has_post_thumbnail()) : ?> <?php the_post_thumbnail('full'); ?> <?php else : ?> <?php $image_src = wp_get_attachment_image_src('xxx', 'full', true); ?> <img src="<?php echo esc_attr( $image_src ); ?>" alt=""> <?php endif; ?> </figure> </div><!-- /.head --> <div> <time datetime="<?php the_time('Y-m-d'); ?>"><?php the_time('Y/m/d'); ?></time> <div><?php the_title(); ?></div> <div><?php echo esc_html(get_post_meta(get_the_ID(), 'test', true)); ?></div> <div> <a>詳しくはこちら</a> </div> </div> </div> <?php return ob_get_clean(); }, 10, 3 );
2023年7月21日 1:50 PM #128800返信が含まれるトピック: 投稿のサムネイルと題名の表示順を逆にしボタンを表示したい
キタジマさん
ありがとうございます。新しい機能なんて便利なのでしょうか…!記事を参考にしながらデバックモードでslugの部分を確認して作ってみました。
// 記事一覧部分全体(template-parts/loop/entry-summary)をカスタマイズ add_filter( 'snow_monkey_pre_template_part_render_template-parts/loop/entry-summary', function( $html, $name, $vars ) { // 最近の投稿以外の場合は処理しない if ( $vars['_context'] !== 'snow-monkey-blocks/recent-posts' || $vars['_context'] !== 'snow-monkey-blocks/recent-posts' ) { return $html; } // _entries_id が # 以外のときは処理しない アンカー名がhome_picku以外は処理しない if ( $vars['_entries_id'] !== '#home_pickup' ) { // clientId かアンカー名が入る return $html; } ob_start(); ?> <div> <div><?php the_title(); ?></div> <div><?php echo esc_html( get_post_meta( get_the_ID(), 'test', true ) ); ?></div> <a class="<?php the_permalink(); ?>">詳しく見る</a> <div><?php the_post_thumbnail('thumbnail'); ?></div> </div> <?php return ob_get_clean(); }, 10, 3 );
真ん中のこの部分のみうまくいきませんでした。
// _entries_id が # 以外のときは処理しない アンカー名がhome_pickup以外は処理しない if ( $vars['_entries_id'] !== '#home_pickup' ) { // clientId かアンカー名が入る return $html; }
というのもコメントに// clientId かアンカー名が入る とあるのですがこれが何を指すのかわからないままとりあえずやったためです。
clientId→検索するもわからず
アンカー名→htmlアンカー?とりあえず試してみたものの失敗この2つについてはどこを見ればわかるでしょうか?既出でしたら申し訳ありません。
♥ 0いいねをした人: 居ません2023年7月9日 8:58 PM #127900気になった点がいくつかあるので羅列します。
– 「PDFのURLを取得できず」というのは、
get_field('pdf')
で値が取れていないということですか?
–str_replace( 'src="' . get_the_post_thumbnail_url($filefiled) . '"', 'src="' . '"', $html )
だと、サムネイルの URL を空にしようとしているように見えます。(ただし、「ファイルのフィールド名を元にサムネイル URL を取得」しようとしているのでおそらくサムネイルの URL は取得できず、置換には失敗していると思います)
–template-parts/loop/entry-summary/figure/figure
を対象としてされていますが、ここにはリンクの HTML は無いと思うので、template-parts/loop/entry-summary
を対象にしてa
要素のhref
の値を書き換えるのが正しいのではと思うのですがどうでしょうか?2023年6月1日 6:18 PM #125042返信が含まれるトピック: 投稿一覧(リッチメディア)でのカテゴリー表示の条件分けをしたい。
「新しく投稿されたものに関してはカテゴリラベルのところにNewマークがつくようにする」は以下のコードを加えました。
すでに「NEW」が表示されているということですね。
私がやるとすれば、サムネイル上の「NEW」以外のカテゴリー名はCSS(display: none
)で消します。
ご提示のコードの場合、該当の要素にmy-new
がついていると思いますので、そこだけ強制的に表示させます。.c-entries .c-entry-summary__term { display: none; } .c-entries span[class*="my-new"] { display: block!important; }
カテゴリーの表示は、位置をCSSで移動させるのがちょっと嫌なので、フィルターフックsnow_monkey_template_part_render_template-parts/loop/entry-summary
で</header>
の後にreplace
を使ってリンクなしのカテゴリーを表示するようにしてあげれば、それっぽい感じになると思います。add_filter( 'snow_monkey_template_part_render_template-parts/loop/entry-summary', function( $html ) { $category = get_the_category(); $cat_name = $category[0]->cat_name; $html = str_replace( '</header>', '</header><p class="cat_name_origin"><span>'. $cat_name. '</span></p>', $html ); return $html; } );
もっとスマートな方法もあるかと思いますが、1つの例として参考にしていただければと思います。
2023年5月22日 3:11 AM #123547返信が含まれるトピック: 任意のタクソノミーの投稿一覧にカスタムフィールドの値を表示させたい
どこまでがうまくいっていて、どこからがうまくいっていないのかがわからないので、適当なところで
var_dump()
して問題を把握すると良いかもしれませんね。add_filter( // template-parts/loop/entry-summary を書き換える 'snow_monkey_template_part_render_template-parts/loop/entry-summary', function( $html, $name, $vars ) { // 「シンプル」のときだけ実行 var_dump( $vars['_entries_layout'] ); if ( 'simple' === $vars['_entries_layout'] ) { // カスタムフィールドを取得して、それをもとに加工した HTML をバッファリングする // ACF や実際に保存されているデータの構造がわからないので実際の状況にあわせて書き直してください。 $course_types = get_field( 'course_type' ); var_dump( $course_types ); ob_start(); foreach ( $course_types as $course_type ) { echo '<span>' . $course_type . '</span>'; } $course_type_html = ob_get_clean(); var_dump( esc_html( $html ) ); return str_replace( '</section>', $course_type_html . '</section>', $html ); } return $html; }, 10, 3 );
2023年5月20日 4:14 AM #123481返信が含まれるトピック: 任意のタクソノミーの投稿一覧にカスタムフィールドの値を表示させたい
ありがとうございます。その後いろいろ調べながらやってみたのですが実現できず、とん挫しています。
エラーメッセージが出たので
}
return $html;を追加してエラーは出なくなったのですが表示はできずでした。
Advanced Custom Fieldsの関数get_fieldを使えばいいのでは?と思い変更したのですがそれではダメでした。※get_post_metaでも出来るようでしたが
https://lucy.ne.jp/bazubu/advanced-custom-fields-36452.html
add_filter( // template-parts/loop/entry-summary を書き換える 'snow_monkey_template_part_render_template-parts/loop/entry-summary', function( $html, $name, $vars ) { // 「シンプル」のときだけ実行 if ( 'simple' === $vars['_entries_layout'] ) { // カスタムフィールドを取得して、それをもとに加工した HTML をバッファリングする // ACF や実際に保存されているデータの構造がわからないので実際の状況にあわせて書き直してください。 $course_types = get_field( 'course_type' ); ob_start(); foreach ( $course_types as $course_type ) { echo '<span>' . $course_type . '</span>'; } $course_type_html = ob_get_clean(); return str_replace( '</section>', $course_type_html . '</section>', $html ); } return $html; }, 10, 3 );
♥ 0いいねをした人: 居ません2023年5月15日 11:05 AM #123138返信が含まれるトピック: 任意のタクソノミーの投稿一覧にカスタムフィールドの値を表示させたい
\Framework\Helper::get_template_part( 'template-parts/loop/entry-summary/term/term' ... );
はターム(カテゴリー等)の一覧を取得するものなので、「ここをカスタムフィールドを取得して HTML を生成・加工する」というコードに書き換えればよいのかなと思います。僕は ACF に詳しくないのと、実際に
course_type
にどのような値が入っているかがわからないのであくまでサンプルですが、だいたい下記のような感じになるのかなと思います。add_filter( // template-parts/loop/entry-summary を書き換える 'snow_monkey_template_part_render_template-parts/loop/entry-summary', function( $html, $name, $vars ) { // 「シンプル」のときだけ実行 if ( 'simple' === $vars['_entries_layout'] ) { // カスタムフィールドを取得して、それをもとに加工した HTML をバッファリングする // ACF や実際に保存されているデータの構造がわからないので実際の状況にあわせて書き直してください。 $course_types = get_post_meta( get_the_ID(), 'course_type' ); ob_start(); foreach ( $course_types as $course_type ) { echo '<span>' . $course_type . '</span>'; } $course_type_html = ob_get_clean(); return str_replace( '</section>', $course_type_html . '</section>', $html ); }, 10, 3 );
2023年5月11日 8:11 PM #122802返信が含まれるトピック: カスタム投稿で表示させたものを他の固定ページにも表示させたい
お世話になっております。
お忙しい中、検証いただき誠にありがとうございます。
add_filter( 'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title', function ( $html, $name ) { if ( is_page( 47 ) ) { // カスタムフィールドで設定したフィールド名を代入 $acf_image = get_field('property_image'); $acf_type = get_field('property_type'); $acf_location = get_field('property_location'); $acf_price = get_field('property_price'); $acf_land_area = get_field('property_land_area'); // テンプレートのh3タグの後に<div class='property-info'>を追加 $acf_property_info = '</h3> <div class="property-info">' . '<div class="property-img"><img src="' . esc_url($acf_image) . '" alt="Image"></div>' . '<div class="property-body">' . '<div class="property-tag">' . '<p>' . esc_html($acf_type) . '</p>' . '</div>' . '<div class="property-content">'. '<p class="location">' . esc_html($acf_location) . '</p>' . '<p class="price">' . esc_html($acf_price) . '</p>' . '<p class="land_area">' . esc_html($acf_land_area) . '</p>' . '</div>' . '</div>' . '</div>'; // テンプレートパーツのh3タグの後ろにdivタグを追加する $html = str_replace( '</h3>', $acf_property_info, $html ); } return $html; }, 10, 2 );
このように記述しました。
アイキャッチとタイトルが表示されてしまいますが、こちらはdisplay: none;で消してしまえばいけそうです。
同じページに投稿ページの最新の投稿もブロックで使っていたので
こちらもimageが出てきてしまっていますが、ページ指定で非表示にすればいけそうです。
また試してみて報告させていただきます。
アドバイスいただき、ありがとうございます。
♥ 0いいねをした人: 居ません -
投稿者検索結果