-
投稿者検索結果
-
2025年7月16日 3:02 PM #145827
返信が含まれるトピック: 同一のタクソノミーの記事が無い場合でも関連投稿を表示させたい
テーマのアップデートをして確認してみました。
前提条件として関連投稿に表示されるのは「同一のタクソノミーの記事」なので
$args['vars']['_posts_query']->set( 'tax_query', false );
の条件を追加しないと「同一のタクソノミーの記事が無い場合」は何も表示されない。上記を踏まえて、以下のコードで思った通りの表示になりました。
<?php /** * 関連記事のクエリをカスタマイズ * * @package my-snow-monkey+ */ /** * 関連記事の取得クエリを操作する * * @param array $args テンプレート取得クエリ. * @return array テンプレート取得クエリ. */ add_filter( 'snow_monkey_get_template_part_args_template-parts/content/related-posts', function ( $args ) { $_post_type = get_post_type(); if ( 'post' === $_post_type || 'works-and-voices' === $_post_type ) { $args['vars']['_entries_layout'] = 'simple'; } if ( 'interview' === $args['name'] ) { $args['vars']['_entries_layout'] = 'carousel'; $args['vars']['_title'] = '他の社員を見る'; $args['vars']['_posts_query']->set( 'tax_query', false ); $args['vars']['_posts_query']->set( 'posts_per_page', 10 ); $args['vars']['_posts_query']->query( $args['vars']['_posts_query']->query_vars ); } if ( 'job-posts' === $args['name'] ) { $args['vars']['_entries_layout'] = 'rich-media'; $args['vars']['_title'] = '他の募集を見る'; // $args['vars']['_posts_query']->set( 'tax_query', false ); $args['vars']['_posts_query']->set( 'posts_per_page', 3 ); $args['vars']['_posts_query']->query( $args['vars']['_posts_query']->query_vars ); // 関連投稿が見つからない場合、または3件未満の場合のフォールバック処理 if ( $args['vars']['_posts_query']->found_posts < 3 ) { $current_post_id = get_the_ID(); if ( ! $current_post_id ) { global $post; $current_post_id = $post ? $post->ID : 0; } $args['vars']['_posts_query'] = new WP_Query( array( 'post_type' => 'job-posts', 'posts_per_page' => 3, 'post__not_in' => array( $current_post_id ), ) ); } } return $args; } );
他の方の参考になると思うので、フォールバック処理の判定条件を追記しておきます。
(表示件数は、デフォルトのままの4件表示の場合)// 1: シンプルに件数のみで判定。4件未満は全てフォールバック処理するので、常に4件表示される。 if ( $args['vars']['_posts_query']->found_posts < 4 ) { // 2: 0件の時にだけフォールバック処理。1件~3件の時はそのまま表示。 if ( ! $args['vars']['_posts_query']->have_posts() && $args['vars']['_posts_query']->found_posts < 4 ) {
2025年7月15日 12:05 PM #145813返信が含まれるトピック: 同一のタクソノミーの記事が無い場合でも関連投稿を表示させたい
- 根本原因としては、
$related_posts_query->have_posts()
がfalse
になることで、関連投稿セクション全体が非表示になる - 条件を
|| 1
にすると強制的に表示できる
以上のことを考慮して、関連投稿が少ない場合のフォールバック機能を追加することで表示できるようになりました。
/** * 関連記事の取得クエリを操作する * * @param array $args テンプレート取得クエリ. * @return array テンプレート取得クエリ. */ add_filter( 'snow_monkey_get_template_part_args_template-parts/content/related-posts', function ( $args ) { $_post_type = get_post_type(); if ( 'post' === $_post_type || 'works-and-voices' === $_post_type ) { $args['vars']['_entries_layout'] = 'simple'; } if ( 'interview' === $args['name'] ) { $args['vars']['_entries_layout'] = 'carousel'; $args['vars']['_title'] = '他の社員を見る'; $args['vars']['_posts_query']->set( 'tax_query', false ); $args['vars']['_posts_query']->set( 'posts_per_page', 10 ); $args['vars']['_posts_query']->query( $args['vars']['_posts_query']->query_vars ); } if ( 'job-posts' === $args['name'] ) { $args['vars']['_entries_layout'] = 'rich-media'; $args['vars']['_title'] = '他の募集を見る'; // $args['vars']['_posts_query']->set( 'tax_query', false ); $args['vars']['_posts_query']->set( 'posts_per_page', 3 ); $args['vars']['_posts_query']->query( $args['vars']['_posts_query']->query_vars ); } return $args; } ); /** * 関連投稿のクエリ引数をカスタマイズ * interview、job-postsで関連投稿が少ない場合のフォールバック機能 * * @param array $args WP_Query の引数配列 * @return array 修正されたクエリ引数 */ add_filter( 'snow_monkey_related_posts_args', function ( $args ) { // グローバルの$postから現在の投稿情報を取得 global $post; if ( ! $post ) { return $args; } // 投稿IDと投稿タイプの型チェック $post_id = (int) $post->ID; $post_type = (string) $post->post_type; // 無効な投稿IDの場合は早期リターン if ( $post_id <= 0 ) { return $args; } // interview、job-postsのカスタム投稿タイプの場合のみ処理 if ( ! in_array( $post_type, array( 'interview', 'job-posts' ), true ) ) { return $args; } // 投稿タイプ別の最小表示件数設定 $min_posts_config = array( 'interview' => 8, 'job-posts' => 3, ); // 投稿タイプに応じた最小表示件数を取得 if ( ! isset( $min_posts_config[ $post_type ] ) ) { return $args; } $min_posts = $min_posts_config[ $post_type ]; // 元の関連投稿を取得 $related_posts = get_posts( $args ); // カウント処理 if ( ! is_array( $related_posts ) ) { $related_posts = array(); } $related_count = count( $related_posts ); // 関連投稿が少ない場合はフォールバック処理を実行 if ( $related_count < $min_posts ) { // フォールバック用のクエリ引数を作成 $fallback_args = array( 'post_type' => $post_type, 'posts_per_page' => $min_posts, 'post__not_in' => array( $post_id ), // 現在の投稿を除外 ); // 既に取得した関連投稿のIDを除外 if ( ! empty( $related_posts ) ) { $existing_ids = wp_list_pluck( $related_posts, 'ID' ); // wp_list_pluck の結果が配列かチェック if ( is_array( $existing_ids ) && ! empty( $existing_ids ) ) { $fallback_args['post__not_in'] = array_merge( $fallback_args['post__not_in'], $existing_ids ); } } // フォールバック記事を取得 $fallback_posts = get_posts( $fallback_args ); // 安全性チェック if ( ! is_array( $fallback_posts ) ) { $fallback_posts = array(); } // 元の関連投稿とフォールバック記事をマージ $all_related_posts = array_merge( $related_posts, $fallback_posts ); // 重複を除去し、指定件数まで調整 $unique_posts = array(); $post_ids_added = array(); // 連想配列として使用してO(1)検索に foreach ( $all_related_posts as $related_post ) { // 既に必要件数に達してたら早期終了 if ( count( $unique_posts ) >= $min_posts ) { break; } // 投稿オブジェクトの存在チェック if ( ! is_object( $related_post ) || ! property_exists( $related_post, 'ID' ) ) { continue; } $related_post_id = (int) $related_post->ID; // 重複チェック if ( ! isset( $post_ids_added[ $related_post_id ] ) ) { $unique_posts[] = $related_post; $post_ids_added[ $related_post_id ] = true; } } // 最終的な投稿IDの配列を作成 if ( ! empty( $unique_posts ) ) { $final_post_ids = wp_list_pluck( $unique_posts, 'ID' ); // IDの配列が有効かチェック if ( ! empty( $final_post_ids ) && is_array( $final_post_ids ) ) { // 元のクエリ引数を更新 $args['post__in'] = $final_post_ids; $args['orderby'] = 'post__in'; // post__inの順序を保持 // tax_queryを削除(post__inを使用するため) unset( $args['tax_query'] ); } } } return $args; }, 10, 1 );
♥ 0Who liked: No user2025年6月10日 10:07 AM #145376返信が含まれるトピック: トップページ以外のロゴのタグをdivからh1に変更したい
そのトピックは記事タイトル部分なので、ロゴ部分を変えたい場合は別の方法で対応する必要があります。
これでどうでしょうか?
add_filter( 'snow_monkey_get_template_part_args_templates/layout/header/' . ( get_theme_mod( 'header-layout' ) ?: 'center' ), function( $args ) { $args['vars']['_title_tag'] = 'h1'; return $args; }, 100 );
♥ 0Who liked: No user2025年6月10日 12:37 AM #145374返信が含まれるトピック: トップページ以外のロゴのタグをdivからh1に変更したい
2025年5月12日 9:47 AM #145162返信が含まれるトピック: 投稿の一覧で、各投稿のカテゴリーを複数表示にしてみたがカテゴリーの順番が希望通りにならない
すみません、改良してみましたがどうでしょうか?
add_filter( 'snow_monkey_get_template_part_args', function( $args ) { // 記事一覧カテゴリー以外のテンプレートの場合は無視 if ( 'template-parts/loop/entry-summary/term/term' !== $args['slug'] ) { return $args; } // 投稿以外の場合は無視 if ( 'post' !== $args['name'] ) { return $args; } if ( 'category' !== $args['vars']['_terms'][0]->taxonomy ?? null ) { return $args; } // 全ての設定されたカテゴリーを返す $raw_terms = get_the_terms( get_the_ID(), 'category' ); // 並び順指定用の配列を用意 $sorted_terms = array( "category-17" => null, 'category-slug-2' => null, 'category-slug-4' => null, ); // 並び順を反映させた配列を生成 foreach ( $raw_terms as $raw_term ) { $sorted_terms[ $raw_term->slug ] = $raw_term; } $args['vars']['_terms'] = array_filter( $sorted_terms, function( $value ) { return is_object( $value ); } ); return $args; } );
が、これ
$sorted_terms
に全部のタームのスラッグを記述しないといけないのがメンテナブルではないなぁという気がします。なのでタームの並び順を指定できるプラグインを試してみるのも手かなぁと思いました。
※しばらく開発されていないみたいなので積極的に採用して良いのかは微妙かもですが…
♥ 0Who liked: No user2025年5月8日 1:19 PM #145116返信が含まれるトピック: 投稿の一覧で、各投稿のカテゴリーを複数表示にしてみたがカテゴリーの順番が希望通りにならない
フレックスボックスじゃないから
order
が効かないのかもしれません。PHP で、$args['vars']['_terms']
に格納した順番のまま画面に出力されるので、そこで調整すると良いかもです。下記のように書き換えてみるとどうでしょうか?
add_filter( 'snow_monkey_get_template_part_args', function( $args ) { // 記事一覧カテゴリー以外のテンプレートの場合は無視 if ( 'template-parts/loop/entry-summary/term/term' !== $args['slug'] ) { return $args; } // 投稿以外の場合は無視 if ( 'post' !== $args['name'] ) { return $args; } // 全ての設定されたカテゴリーを返す $raw_terms = get_the_terms( get_the_ID(), 'category' ); // 並び順指定用の配列を用意 $sorted_terms = array( 'category-17', // 1番目に表示したいタームのスラッグ 'category-slug-2', // 2番目に表示したいタームのスラッグ 'category-slug-4', // 3番目に表示したいタームのスラッグ ); // 並び順を反映させた配列を生成 foreach ( $raw_terms as $raw_term ) { $sorted_terms[ $raw_term->slug ] = $raw_term; } $args['vars']['_terms'] = $sorted_terms; return $args; } );
♥ 0Who liked: No user2025年4月8日 2:50 PM #144793返信が含まれるトピック: 検索結果一覧ページのレイアウトを記事一覧ページとは別にしたい
2025年4月2日 3:10 PM #144666返信が含まれるトピック: bogoプラグインを利用し投稿ページの「関連記事」を言語ごとの記事を表示したい
↑のコードは全部消して、下記のコードを貼り付けるとどうでしょうか?
add_filter( 'snow_monkey_get_template_part_args_template-parts/content/related-posts', function( $args ) { $args['vars']['_posts_query']->set( 'suppress_filters', false ); $args['vars']['_posts_query']->set( 'lang', get_locale() ); $args['vars']['_posts_query']->query( $args['vars']['_posts_query']->query_vars ); return $args; } );
2025年3月30日 10:39 AM #144610返信が含まれるトピック: カスタム投稿タイプだけプロフィールボックスを消したい
CSS で消すのが一番簡単です。カスタム投稿タイプのスラッグが
news
だとすると、news
の詳細ページには.single-news
というクラスがつくので、下記の CSS で消せます。.single-news .wp-profile-box { display: none; }
HTML の出力自体をなくしたいなら、フックを使う必要があります。
add_filter( 'snow_monkey_get_template_part_args_template-parts/content/entry/entry', function( $args ) { // 投稿タイプが news 以外のときは無視 if ( 'news' !== get_post_type() ) { return $args; } // news のときはプロフィールボックスを表示させない $args['vars']['_display_profile_box'] = false; return $args; } );
2025年2月18日 8:38 AM #144121返信が含まれるトピック: ロゴのhtmlの書き換え方について
子テーマで普通にテンプレートパーツを上書きすることももちろん可能ですが、今後のメンテナンスを考えると My Snow Monkey プラグインか、子テーマを使っているなら子テーマの
functions.php
にコードを書くのが良いです。下記でどうでしょうか?
add_filter( 'snow_monkey_get_template_part_args_template-parts/header/site-branding', function( $args ) { $args['vars']['_title_tag'] = 'p'; return $args; } );
2025年2月9日 7:13 PM #143991返信が含まれるトピック: 最新の投稿一覧ブロックで先頭固定が除外されない
表現が乏しかったです
右カラムの設定で、公開日を表示にすれば、公開日で、更新日を表示にすれば更新日で表示されるとおもってました> そのコードをここに共有してもらえますか?
/** * 最新用語を更新日でソートする add_filter( 'snow_monkey_get_template_part_args_template-parts/common/entries/entries', function( $args ) { // 最近の投稿ブロックのとき if ( 'snow-monkey-blocks/recent-posts' === $args['vars']['_context'] ) { // 並び順を変更 $args['vars']['_posts_query'] = new \WP_Query( array_merge( $args['vars']['_posts_query']->query, array( 'orderby' => 'modified', 'order' => 'DESC' ) ) ); } return $args; } ); */
♥ 0Who liked: No user2025年1月5日 5:23 PM #143430返信が含まれるトピック: 投稿一覧でのカテゴリー表示順を親→子の順番にしたい
過去のフォーラムに似た質問があり試したところ解決したのでトピックを閉じます。
失礼しました。add_filter( 'snow_monkey_get_template_part_args', function( $args ) { // 記事一覧カテゴリー以外のテンプレートの場合は無視 if ( 'template-parts/loop/entry-summary/term/term' !== $args['slug'] ) { return $args; } // 投稿以外の場合は無視 if ( 'post' !== $args['name'] ) { return $args; } $new_terms = array(); $terms = get_the_terms( get_the_ID(), 'category' ); foreach ( $terms as $term ) { $term_ids = get_ancestors( $term->term_id, 'category', 'taxonomy' ); krsort( $term_ids ); // チェックしたカテゴリーと先祖のカテゴリー情報をカテゴリーラベルとして使用 foreach ( $term_ids as $term_id ) { $new_terms[ $term_id ] = get_term( $term_id, 'category' ); } $new_terms[ $term->term_id ] = $term; } $args['vars']['_terms'] = $new_terms; return $args; } );
2024年12月20日 4:24 PM #143290返信が含まれるトピック: 投稿の詳細ページだけアイキャッチ画像を変更したい
あ、条件分岐が抜けていました…。
is_single()
で条件分岐させてください。add_filter( 'snow_monkey_get_template_part_args_template-parts/common/page-header', function( $args ) { if ( ! is_single() ) { return $args; } $default_image_url = get_template_directory_uri() . '/wp-content/uploads/2024/12/XXXX.jpeg'; $args['vars']['_image'] = '<img src="' . esc_url( $default_image_url ) . '" alt="' . esc_attr( get_the_title() ) . '">'; return $args; } );
画像が表示されないのは上記コードの中で指定している画像の URL が正しくないからなので、実際に表示させたい画像の URL になるように、コードを修正してみてください。
2024年12月20日 12:30 PM #143279返信が含まれるトピック: 投稿の詳細ページだけアイキャッチ画像を変更したい
投稿一覧はそのままで詳細ページでの表示だけ、ということは、あくまで「その記事の装飾としての画像を変えたい」ということだと思ったので、そのやり方を考えてみました。
※
post_thumbnail_html
で詳細ページだけ表示を変える場合、OGP 画像や関連記事などに使用される画像も変わってしまう可能性があるのでそれ以外を使ったやり方にしてみました。「アイキャッチ画像の表示」の選択肢によって対応が変わるので、一応それぞれのパターンについて考えてみました。
### 「アイキャッチ画像の位置」が「ページヘッダー」のとき
// テンプレートパーツに画像の URL を差し替えるオプションがあるのでそれを使う。 add_filter( 'snow_monkey_get_template_part_args_template-parts/common/page-header', function( $args ) { $default_image_url = get_template_directory_uri() . '/wp-content/uploads/2024/12/XXXX.jpeg'; $args['vars']['_image'] = '<img src="' . esc_url( $default_image_url ) . '" alt="' . esc_attr( get_the_title() ) . '">'; return $args; } );
### 「アイキャッチ画像の位置」が「コンテンツの上」のとき
// オプションは無いのでテンプレートパーツ自体を書き換える。 add_filter( 'snow_monkey_template_part_render_template-parts/content/eyecatch', function( $html ) { if ( ! $html ) { return $html; } $default_image_url = get_template_directory_uri() . '/wp-content/uploads/2024/12/XXXX.jpeg'; $default_image = ob_start(); ?> <div class="c-eyecatch"> <img src="<?php echo esc_url( $default_image_url ); ?>" alt="<?php echo esc_attr( get_the_title() ); ?>"> </div> <?php return ob_get_clean(); } );
2024年11月28日 6:46 PM #142974返信が含まれるトピック: 投稿一覧のタイトル(c-entry-summary__title)をh3に変更したい
- 根本原因としては、
-
投稿者検索結果