[我正在尝试使wordpress搜索仅显示具有名为“ video-information.php”的自定义模板的页面。
在video-information.php文件的开头,我将其添加到模板中创建名称
<?php
/*
* Template Name: Video Information
*
* @package skytube
* @since skytube v1.0.0
*/
get_header();
?>
我知道wordpress会搜索网站中的内容和所有内容,但我想限制查询以使其只照看具有自定义模板的页面。
我进行了一些搜索并找到了教程,但是他们都只是谈论如何将搜索查询限制为帖子和页面或自定义帖子类型。这是这些教程的示例。
// In function.php file
function searchfilter($query) {
if ($query->is_search && !is_admin() ) {
$query->set('post_type',array('post','page'));
}
return $query;
}
add_filter('pre_get_posts','searchfilter');
上面的代码只能将搜索查询限制为不具有自定义模板的特定页面的页面和帖子。
您可以使用meta_query进行如下操作:
function custom_search_only_posts($query) {
if ($query->is_search) {
$query->set('meta_query', [['key' => '_wp_page_template', 'value' => 'template-custom.php']]);
}
return $query;
}
查看官方文档:https://developer.wordpress.org/reference/classes/wp_query/#custom-field-post-meta-parameters