我只想在WP搜索结果中显示带有特定模板的页面, 因为我尝试构建没有任何插件的产品目录。纯WP代码。有些页面是我的产品, 并且它们具有product.php模板文件。这是我的search.php:
<
?php
if ( have_posts() ) :
while ( have_posts() ) :
the_post();
get_template_part( 'template-parts/post/content', 'excerpt' );
endwhile;
the_posts_pagination();
else :
?>
<
p>
<
?php _e( 'No results.' );
?>
<
/p>
<
?php
get_search_form();
endif;
?>
问题是, 如何仅显示我的产品页面而不显示其他页面?
#1试试看!此功能将中断搜索查询, 并为查询添加一些条件以返回特定页面。
//Filter the search for only posts and parts
function SearchFilter($query)
{
// Now filter the posts
if ($query->
is_main_query() &
$query->
is_search &
&
$search_template) {
$query->
set('post_type', 'page');
$query->
set('meta_key' =>
'_wp_page_template', );
$query->
set('meta_value' =>
'product.php');
}
// Returning the query after it has been modified
return $query;
}add_action('pre_get_posts', 'SearchFilter');
【WordPress-在搜索结果中仅显示具有特定模板的页面】解释代码:
” post_type” 将限制此过滤器仅用于页面帖子类型。
条件将限制此过滤器仅在搜索查询上起作用, 而不是在每次调用post查询时都起作用。
$query->
is_search &
&
$search_template
这些参数将通过包含页面模板的meta_key” _wp_page_template” 过滤返回的帖子, 因此我们仅返回带有页面模板” product.php” 的页面。
$query->
set('meta_key' =>
'_wp_page_template', );
$query->
set('meta_value' =>
'product.php');
推荐阅读
- WordPress Divi主题商店页面问题
- WordPress(显示特定页面的子页面中的图像附件)
- WordPress(移动版和桌面版的不同标题图片)
- WordPress检测到的未验证输入变量的用法()
- Debian和Ubuntu有什么不同吗?该如何选择?
- 文本三剑客之grep
- smb: ; put NT_STATUS_ACCESS_DENIED opening remote
- rsyslog.conf配置文件
- EasyCVR调用RTSP地址个别不能播放是什么原因()