Woocommerce docs声明为了使主题兼容,应该调用此功能woocommerce_content();
但是我看到很多主题都没有使用,但仍然得到WC的全力支持模板系统。
准确地说,例如在进行产品搜索时,我需要使用woocommerce加载此templates\loop\result-count.php
,而不是仅仅应用过滤器并显示主题search.php
。
要了解我的意思,让我们尝试搜索Pro theme和free theme;专业主题与woocommerce完全集成,并使用woocommerce插件目录中的模板,而免费主题只使用普通search.php
。同样的事情适用于使用默认的Twenty Fourteen主题;它也为产品使用search.php
。
我查看了专业主题的代码并且没有woocommerce_content();
所以我想知道他们是如何做到的!
我检查了WC文档,但他们很穷,并且不能很好地解释如何完全整合..任何想法都将受到赞赏,谢谢:)
答案 0 :(得分:0)
经过一些非正统的调试方式,我终于找到了为什么Woocommerce没有加载上面给出的例子(搜索时),专业主题从搜索查询中删除了类别!
add_filter( 'pre_get_posts', 'woo_exclude_categories_homepage' );
这使得woocommerce在检查woocommerce_products_will_display()
时会进一步验证,并且调用is_product_taxonomy()
也会更深入并调用is_tax( get_object_taxonomies( 'product' ) )
!
文档中没有提到上述内容,如果没有wordpress的深入了解,在第一页上弄清楚就不容易了!
希望它有助于/节省其他人的时间..
<强>更新强>
奇怪;事实证明,在$query->parse_query();
的函数调用上执行pre_get_posts
解决了搜索的问题!
add_filter('pre_get_posts', 'wpf_exclude_categories_homepage');
function wpf_exclude_categories_homepage($query) {
$query->parse_query();
return $query;
}