Woocommerce中隐藏指定具有某个自定义字段值的产品

创客云

Woocommerce中隐藏指定具有某个自定义字段值的产品,我们在电商网站开发时经常遇到这种要求,其实和上一篇文章 WooCommerce 根据用户角色隐藏指定分类的产品 没有太大的区别,至少查询内容不同而已,将其添加到主题的functions.php文件中:

  1. add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
  2. function custom_pre_get_posts_query( $q ) {
  3. if ( ! $q->is_main_query() ) return;
  4. if ( ! $q->is_post_type_archive() ) return;
  5. if ( ! is_admin() ) {
  6. $q->set( 'meta_query', array(array(
  7.     'key'       => '_stock_status',
  8. // 字段名称
  9.     'value'     => 'outofstock',
  10. // 字段值
  11.     'compare'   => 'NOT IN'
  12. )));
  13.  
  14. }
  15. remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
  16. }

上面的代码就是在查询输出之前去除了,具有"缺货"字段(outofstock)的产品。当然页可以使用此方法排除每个产品分类代码如下:

  1. add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
  2. function custom_pre_get_posts_query( $q ) {
  3. if ( ! $q->is_main_query() ) return;
  4. if ( ! $q->is_post_type_archive() ) return;
  5. if ( ! is_admin() ) {
  6. $q->set( 'tax_query', array(array(
  7. 'taxonomy' => 'product_cat',
  8. 'field' => 'slug',
  9. 'terms' => array( 'PUT YOUR CATEGORY HERE' ),
  10. // Don't display products in the membership category on the shop page . For multiple category , separate it with comma.
  11. 'operator' => 'NOT IN'
  12. )));
  13.  
  14. }
  15. remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
  16. }
本文由 CityMall 整理发布如需转载,请注明出处:https://www.22vd.com/60942.html
云模板

发表评论

热销模板

高端信息技术产品展示DedeCMS织梦中英文模板

Envato

本站承接 WordPress / DedeCMS / ThinkPHP 等
系统建站、仿站、开发、定制等业务!