WooCommerce 中隐藏指定具有某个自定义字段值的产品,我们在电商网站开发时经常遇到这种要求,其实和上一篇文章 WooCommerce 根据用户角色隐藏指定分类的产品 没有太大的区别O ! D z G M +,至少查询内容不9 h Y }同而已,将其添加到主题= Y s &的 functions.php 文件中:
- add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
- function cg S x ! q 3 k P 7ustom_pre_get_posts_query( $q ) &) q y A [ X j ] m#123;
- if J w P : i &0; ! $q->is_mainM 3 I 9 J k y a_query() ) return;
- if ( ! $q; O c m 0 L H h->is_post_type_archive(i g C Q41; ) return;
- if ( ! is_admin() ) {
- $q->set( 'meta_query', array(array(
- 'key' => '_sto^ m C d (ck_status',
- // 字段名称
- 'value' => 'outofstock',
- // 字段值
- 'c9 % w z Z K E Sompare' => 'NOT IN'
- )));
- }
- remove_action( 'pre_get_posts', 'custom_pre_get_posts_query'[ } o X M 6 4 s );
- }
上面的W T Y h W r f代码就是在查询输出之前去除了,具有"缺货"字段(outofstock)的产品。当然页可以使用此方法排除每个产品分类代码如下:
- add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
- function custom_pre_get_posts c l j 6 [ us_query( $q ) {
- if ( ! $q->is_main_query(1 H k1;R y [ ) return;
- if ( ! $q->is_post_tF a W 5 \ type_arch] 4 p D V @ ~ X ,ive() ) return;
- if ( ! iU Y R -s_admin() &G C x R#41; $ 4 u ? I23;
- $q->set( 'tax_query', array(array(
- 'taxonomy' => 'product_cat',
- 'field' => 'slug',
- 'terms' => array( 'PUT YOUR CATEGORYT p m @ 4 HERE' ),
- // Don't display products in the mem$ r 7 V b u W _ }bership category on the shop page . For multiple categ: # [ I . q {ory , separas & 8te it with comma.
- 'operator' => 'NOT IN'
- ))&z D 3 ] 5 q#41;;
- }
- remove_action( 'pre_get_posts', 'custom_pre_get_posi u B D G f ) U Wts_query' );Z a [ . {
- }