自定义帖子类型的自定义搜索模板

时间:2014-09-23 作者:jasenmp

我知道这个问题被问了无数次,我已经找到了解决办法。这似乎相当直截了当,但出于某种原因,它不起作用。我想知道这是否与我使用此插件执行搜索有关:https://wordpress.org/plugins/search-filter/ 但我有我的怀疑。我希望有人有一些见解,也许我错过了什么。以下是我的代码供参考:

function template_chooser($template)
{
   global $wp_query;
   $post_type = get_query_var(\'post_type\');
   if( $wp_query->is_search && $post_type == \'product\' )
{
  return locate_template(\'archive-products.php\');
} else {
   $args = array_merge( $wp_query->query, array( \'post_type\' => \'post\' ) );
   query_posts( $args ); 
}
 return $template;
}
    add_filter(\'template_include\', \'template_chooser\');
我将其用于WooCommerce,搜索和筛选插件用于按类别、属性和名称选择产品。搜索确实有效,只是没有拉入自定义模板。我想做的是创建一个自定义结果页面,以与WooCommerce类别页面上显示产品的方式相同的方式显示产品。出于某种原因,如果您在不选择任何内容的情况下进行搜索,它将使用用于帖子、页面等的标准结果模板,而不是WooCommerce产品模板。如果您选择一个类别或属性,它将显示WooCommerce产品模板,并显示搜索结果。

任何帮助都将不胜感激。非常感谢。

1 个回复
SO网友:Bernie

尝试在else{}, 像这样:

function template_chooser($template)
{
   global $wp_query;
   $post_type = get_query_var(\'post_type\');
   if( $wp_query->is_search && $post_type == \'product\' )
{
   return locate_template(\'archive-products.php\');
} else {
   $args = array_merge( $wp_query->query, array( \'post_type\' => \'post\' ) );
   query_posts( $args ); 
   return locate_template(\'archive-products.php\');
}
 return $template;
}
    add_filter(\'template_include\', \'template_chooser\');
尚未测试。

结束

相关推荐

使用Apply_Filters帮助输出POST类

我不熟悉脚本,这是一个插件,我想修改它来输出post类。当我尝试使用时:apply_filters( \'post_class\', $page->post_class ) it仅输出array=\" \". 我是否需要一个附加函数来连接到post类?在我的研究中,我无法判断我的语法是否错误,或者我在类中缺少了一个要“拉”的函数apply_filters 抓住。非常感谢你的帮助。 var $db_fields = array (\'parent\' => \'post_parent\',