-
投稿者投稿
-
2023年7月24日 10:46 AM #128865
【お使いの Snow Monkey のバージョン】:18.2.0
【お使いの Snow Monkey Blocks のバージョン】:17.2.0
【お使いの Snow Monkey Editor のバージョン】:9.1.1
【お使いのブラウザ】:chrome
【当該サイトのURL】:-### 実現したいこと
カスタム投稿タイプのアーカイブページ(一覧ページ)で特定の記事を除外する方法について教えて頂きたいです。
具体的には、各記事に設定したカスタムフィールドで「一覧に表示させる?」を真偽値で入力し、その結果に応じて、一覧ページへの表示を出し分けたいと考えています。
### 発生している問題
サブクエリの情報を書き換えられない
### 試したこと
以下のページを参考に、
snow_monkey_get_template_part_args_template-parts/common/entries/entries/posts
フックを使用して、まずはサブクエリの表示をカスタマイズしようと試みました。最近の投稿一覧から特定カテゴリーを除外したいこのトピックには4件の返信、2人の参加者があり、最後にgamaにより1年、 4ヶ月前に更新されました。 5件の…snow-monkey.2inc.org※本来の目的は、カスタムフィールドの値により特定の記事の表示を除外することですが、
posts_per_page
で試しにやってみました$args['vars']['_posts_query']->set( 'posts_per_page', 5)
しかし、これではサブクエリが上書きされませんでした。
回答するために不足する情報等があれば返信ください。
以上、宜しくお願いします。
♥ 0いいねをした人: 居ません2023年7月24日 5:16 PM #1288862023年7月24日 11:48 PM #128893北島様
ご回答ありがとうございます。
仰る通り、メインクエリですね…。すみません勘違いしていました。
以下のコードをpre_get_postsフックで記載したら実装できました!
function exclusionFromList($query) { if (is_admin() || ! $query->is_main_query()) { return; } if(is_post_type_archive('custom-post')){ $query->set( 'meta_key', 'list_display'); $query->set( 'meta_value', true); $query->set( 'meta_compare', '='); } } add_filter('pre_get_posts', 'exclusionFromList');
やりたいことはできたのですが、上記のコードを作成する過程で分からないことがあったので、教えて頂けると幸いです。
最初は、以下のようなコードを作成しましたが、これではうまくいきませんでした。(絞り込みはできず、全件表示されてしまいました)
function exclusionFromList($query) { if (is_admin() || ! $query->is_main_query()) { return; } if(is_post_type_archive('custom-post')){ $query->set( 'meta_query', array( 'key' => 'list_display', 'value' => true, 'compare' => '=' ) ); } } add_filter('pre_get_posts', 'exclusionFromList');
後者のコードで絞り込みができない理由が分かりません…。
何か思い当たるところはありますでしょうか?
♥ 0いいねをした人: 居ません2023年7月25日 5:08 PM #128925array
がもう一つ深くないとダメだったりしませんかね?$query->set( 'meta_query', array( array( 'key' => 'list_display', 'value' => true, 'compare' => '=', ), ), );
♥ 0いいねをした人: 居ません2023年7月25日 5:45 PM #128927北島様
有難うございます。
階層を深くしても結果は変わらずでした…。
試しにvar_dump()で確認してみたら、コード自体は認識されているようでした。
object(WP_Query)[2979]
~省略~
public ‘query_vars’ =>
array (size=54)
~省略~
‘meta_query’ =>
array (size=1)
0 =>
array (size=3)
‘key’ => string ‘list_display’ (length=12)
‘value’ => boolean true
‘compare’ => string ‘=’ (length=1♥ 0いいねをした人: 居ません2023年7月26日 10:19 PM #128961うーん、なんでしょうね…。実際に実行される SQL が
meta_key
meta_value
を指定したときと、配列で指定したときでどう違うのかを見てみるとなにかわかるかも…。 -
投稿者投稿
- トピック「カスタム投稿タイプのアーカイブページ(一覧ページ)で特定の記事を除外したい」には新しい返信をつけることはできません。