WordPress-在搜索结果中仅显示具有特定模板的页面

我只想在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');

    推荐阅读