web-dev-qa-db-ja.com

検索クエリ - >特定のテンプレート以外のすべてのページを表示

これらは検索クエリに対する私の引数です:

$args = array(
 's' =>$s,
 'post_type' => array( 'post', 'p24_cases', 'page')
);

これらの引数を使用すると、検索結果に検索ワードを含むすべてのページが表示されます。 「bedankt」という名前のページテンプレートを除いて、すべてのページを表示したい(オランダ語で感謝)。

1
Maarten Wolfsen

質問に答えるために答えを見直しました

特定のテンプレートを持つすべてのページを除外するには、meta_queryを実行してカスタムフィールド_wp_page_templatebedanktに設定してすべてのページを除外するだけです。 WordPressはページに割り当てられたテンプレートを_wp_page_templateという隠しカスタムフィールドとして保存します。

これを念頭に置いて、私たちは以下を行うことができます

$args = [
    's'         => $s,
    'post_type' => ['post', 'page', 'p24_cases'],
    'meta_key'  => [
        [
            'key'     => '_wp_page_template',
            'value'   => 'bedankt.php',
            'compare' => 'NOT IN'
        ]
    ]
];

ORIGINAL ANSWER - 誤解された質問

あなたは単にそのページの投稿IDを取得する必要があります、そしてそれからpost__not_inに配列としてそれを渡します

'post__not_in' => [1], // Replace 1 with actual page ID

またはPHP 5.4より前

'post__not_in' => array( 1 ), // Replace 1 with actual page ID
1
Pieter Goosen