Woocommerce 中隐藏指定具有某个自定义字段值的产品,我们在电商网站开发时经常遇到这种要求,其实和上一篇文章 WooCommerce 根据用户角色隐藏指定分类的产品 没有太大的区别,至少查询内容不同而已,将其添加到主题的 functions.php 文件中:
add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
function custom_pre_get_posts_query( $q ) {
if ( ! $q->is_main_query() ) return;
if ( ! $q->is_post_type_archive() ) return;
if ( ! is_admin() ) {
$q->set( 'meta_query', array(array(
'key' => '_stock_status',
// 字段名称
'value' => 'outofstock',
// 字段值
'compare' => 'NOT IN'
)));
}
remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
}
上面的代码就是在查询输出之前去除了,具有"缺货"字段(outofstock)的产品。当然页可以使用此方法排除每个产品分类代码如下:
add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
function custom_pre_get_posts_query( $q ) {
if ( ! $q->is_main_query() ) return;
if ( ! $q->is_post_type_archive() ) return;
if ( ! is_admin() ) {
$q->set( 'tax_query', array(array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'PUT YOUR CATEGORY HERE' ),
// Don't display products in the membership category on the shop page . For multiple category , separate it with comma.
'operator' => 'NOT IN'
)));
}
remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
}
专业提供WordPress主题安装、深度汉化、加速优化等各类网站建设服务,详询在线客服!