-
投稿者検索結果
-
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いいねをした人: 居ません2023年5月1日 7:58 PM #122417返信が含まれるトピック: カスタム投稿で表示させたものを他の固定ページにも表示させたい
ちょっと実際にどういう値が入ってきているのか確認したいので、コードを下記のように改変して、固定ページでどのような値が表示されるか教えてください!
add_filter( 'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title', function ( $html, $name ) { var_dump( $name ); var_dump( get_post_type() ); if ( 'propertys' === $name ) { // 〜前後省略〜 }, 10, 2 );
2023年5月1日 4:19 PM #122401返信が含まれるトピック: カスタム投稿で表示させたものを他の固定ページにも表示させたい
template-parts/loop/entry-summary/title/title
はアーカイブページの記事一覧部分でも最近の投稿ブロックの記事一覧部分でも共通して使用されているので、フックはどちらの場合も通っていると思います。気になるのは
if( is_post_type_archive('propertys') ){
のところで、この条件だと「propertys というカスタム投稿アーカイブページのとき」だけしか処理が実行されなくなってしまいます。add_filter( 'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title', function ( $html, $name ) { if ( 'propertys' === $name ) { // 〜前後省略〜 }, 10, 2 );
のように書き換えるとどうでしょうか?
2023年5月1日 2:56 PM #122392返信が含まれるトピック: カスタム投稿で表示させたものを他の固定ページにも表示させたい
キタジマさん、早速のご返信ありがとうございます。
カスタム投稿アーカイブの一覧部分と全く同じデザインの一覧を、特定の固定ページにも表示させたいということでしょうか?
はい、そのように表示したいです。
////////////////////////////////////// // カスタム投稿ページにカスタムフィールドを表示 ////////////////////////////////////// add_filter( 'snow_monkey_template_part_render_template-parts/content/entry/content/content', function ($html) { if (get_post_type() === 'propertys') { // カスタムフィールドで設定したフィールド名を代入 $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'); $acf_property_info = '<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>'; $html = $acf_property_info; } return $html; } ); //////////////////////////////////////////// // カスタム投稿のアーカイブページにカスタムフィールドを表示 //////////////////////////////////////////// add_filter( 'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title', function ( $html ) { if( is_post_type_archive('propertys') ){ // カスタムフィールドで設定したフィールド名を代入 $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'); // テンプレートのh2タグの後に <div class="property-info">を追加 $acf_property_info = '</h2><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>'; // テンプレートパーツのh2タグの後ろにdivタグを追加する $html = str_replace( '</h2>', $acf_property_info, $html ); } return $html; } );
アーカイブページの見た目がこちらで(この画像の上にセクションのタイトルがあります)
・実際に他の固定ページで「最近の投稿」ブロックを使用した見た目が
↓↓↓
アイキャッチ画像を仮に抜くと上記添付画像の左上のように何も画像が表示されません。
画像に関してはアイキャッチ画像とカスタムフィールドの画像を合わせれば良いのですがテキストなどをこちらにも紐付けさせることは可能でしょうか。お忙しい中大変恐れ入りますが、よろしくお願いいたします。
♥ 0いいねをした人: 居ません2023年4月24日 2:12 PM #122077返信が含まれるトピック: 任意のタクソノミーの投稿の特定の場所にカテゴリーを表示させたい
確かに
position
調整する方式だと逆にややこしくなりそうですね…。一応フックを使ったやり方も考えてみたので共有します。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'] ) { // カテゴリーラベルを取得して、各項目の最後に追加する。 ob_start(); \Framework\Helper::get_template_part( 'template-parts/loop/entry-summary/term/term', $name, array( '_context' => $vars['_context'], '_terms' => $vars['_terms'], ) ); $terms = ob_get_clean(); return str_replace( '</section>', $terms . '</section>', $html ); } return $html; }, 10, 3 );
これで画像に重なって表示されるやつ(デフォルト)と、項目の最後に追加されたやつの2箇所にタームが表示されるようになります。この状態で画像上のタームは CSS で消して、最後に追加されたタームは CSS で位置調整すると
position
だけでやる場合よりも調整しやすいかなと思います。2023年4月21日 8:12 AM #121933返信が含まれるトピック: エントリーカードにWP Ulikeのハートマークを表示させたい
snow_monkey_template_part_render_
フックは文字列をreturn
する必要があります。wp_ulike()
がどのような関数なのかわからないのですが、文字列を「出力」する関数だと仮定すると、下記のようなコードでどうでしょうか?add_action( 'snow_monkey_template_part_render_template-parts/loop/entry-summary/meta/meta', function( $html ) { // この $html にもともとのメタ情報の HTML が格納されています ob_start(); // ここから先「出力」されるものをバッファリング(変数に格納できるように)する if ( function_exists( 'wp_ulike' ) ) { wp_ulike('get'); // 出力(バッファリングされる) } $ulike = ob_get_clean(); // $ulike に格納 return $html . $ulike; // もともとの HTML と ulike を返す(どちらも表示する) } );
♥ 0いいねをした人: 居ません -
投稿者検索結果