Спасибо, Николай! По какой-то причине прошлой ночью я просто не получал это на работу, но сегодня, через час или два, я сделал Возможно, это просто тот факт, что я использовал неправильный фильтр или пропустил последнюю строку вашего кода.
В моем случае я хотел исключить контент на основе нескольких шаблонов, поэтому добавил больше элементов массива ключ / значение / сравнение. Я также хотел сделать это только во время поиска, поэтому добавил условное предложение для этого. Вот полная функция, которую я добавил в файл functions.php моей темы:
// exclude any content from search results that use specific page templates
function exclude_page_templates_from_search($query) {
global $wp_the_query;
if ( ($wp_the_query === $query) && (is_search()) && ( ! is_admin()) ) {
$args = array_merge($wp_the_query->query, array(
'meta_query' => array(
array(
'key' => '_wp_page_template',
'value' => 'page-template-1.php',
'compare' => '!='
),
array(
'key' => '_wp_page_template',
'value' => 'page-template-2.php',
'compare' => '!='
),
array(
'key' => '_wp_page_template',
'value' => 'page-template-3.php',
'compare' => '!='
)
),
));
query_posts( $args );
}
}
add_filter('pre_get_posts','exclude_page_templates_from_search');