php – 在WooCommerce中过滤产品类别存档页面
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 在WooCommerce中过滤产品类别存档页面,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2285字,纯文字阅读大概需要4分钟。
内容图文
![php – 在WooCommerce中过滤产品类别存档页面](/upload/InfoBanner/zyjiaocheng/718/69d4ac8bc79143ba9eece0c34d95e3e0.jpg)
我目前正在开发一个WordPress / WooCommerce书店网站,它使用自定义的taxonomy.php WooCommerce模板来显示一组名为“Highlights”的产品类别的产品.因此,例如,/ books / product-category / highlight / best-sellers显示与“Highlights”的“Best Sellers”子类别相关联的产品.我想要做的是为这些存档页面添加过滤功能,以允许通过名为“主题”的不同类别对这些产品类别进行更细粒度的视图.因此,例如,选中“最佳卖家”页面上的“艺术”框将显示该类别中的畅销书.
最后,我想在URL中使用$_GET参数,例如/ books / product-category / highlight / best-sellers /?topic = art.我一直在试验pre_get_posts,但我的结果充其量有些不稳定.以下是我迄今为止在functions.php中尝试过的内容:
add_action('pre_get_posts', 'filter_product_topic');
function filter_product_topic($query) {
if( is_admin() ) return;
$tax_query = $query->get('tax_query');
if( isset($_GET['topic']) ) {
$tax_query[] = array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => $_GET['topic'],
'operator' => 'IN'
);
}
$query->set('tax_query', $tax_query);
}
作为一个非常基本的测试,这似乎适用于主存档查询,但它似乎对模板的其余部分产生了负面影响,并且看起来在页面上破坏了显示旋转木马的英雄元素的不同查询不同的产品.对于那些更熟悉WooCommerce的人,我想知道是否有更好的方法来实现所需的结果并且只影响主存档产品查询,而不是模板中可能存在的任何其他查询?
感谢您的帮助,如果我的问题或相关细节不清楚,请告诉我.
解决方法:
在你的代码中,主要的缺失应该是以这种方式使用is_main_query() WP_Query method:
if( ! $query->is_main_query() ) return;
或者使用WordPress pre_get_posts过滤器钩子而不是使用WordPress pre_get_posts过滤器钩子,在Woocommerce中可以使用专用的woocommerce_product_query_tax_query过滤器钩子,它已经包含了is_main_query()Wordpress WP_Query方法.
这个钩子是woocommerce专用WC_Query类的一部分.试试这个:
add_filter( 'woocommerce_product_query_tax_query', 'filter_product_topic', 10, 2 );
function filter_product_topic( $tax_query, $query ) {
// Only on Product Category archives pages
if( is_admin() ||?! is_product_category() ) return $tax_query;
// The taxonomy for Product Categories
$taxonomy = 'product_cat';
if( isset( $_GET['topic'] ) && ! empty( $_GET['topic'] )) {
$tax_query[] = array(
'taxonomy' => $taxonomy,
'field' => 'slug',
'terms' => array( $_GET['topic'] ),
'operator' => 'IN'
);
}
return $tax_query;
}
代码位于活动子主题(或活动主题)的function.php文件中.它应该有效.
内容总结
以上是互联网集市为您收集整理的php – 在WooCommerce中过滤产品类别存档页面全部内容,希望文章能够帮你解决php – 在WooCommerce中过滤产品类别存档页面所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。