You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于ACF自定义字段值禁用/隐藏WooCommerce商品

解决ACF日期字段隐藏WooCommerce商品的问题

嘿,我之前也踩过类似的坑——想用ACF的日期类字段过滤隐藏商品,一开始误用了tax_query(这玩意儿是给分类/标签用的,和自定义字段完全不搭),折腾半天才搞明白正确的姿势。咱们直接上可行的方案:

核心思路

ACF自定义字段存在WordPress的postmeta表中,所以过滤商品必须用meta_query参数,而不是tax_query!之前选的钩子没问题,但方向错了,换用meta_query就能直接从数据库层面过滤商品,不用先获取字段值再绕弯处理。

代码实现(两种常见场景)

把下面的代码加到你的主题functions.php或者自定义插件里,记得替换成你自己的ACF字段名:

场景1:隐藏「日期字段值小于等于当前日期」的商品

比如商品有个“过期日期”字段,过期后自动隐藏:

add_action( 'woocommerce_product_query', 'hide_expired_products_via_acf' );
function hide_expired_products_via_acf( $query ) {
    // 只影响前台主商品查询,后台编辑不受影响
    if ( ! is_admin() && $query->is_main_query() ) {
        // 匹配ACF日期字段的存储格式(默认是YYYYMMDD,改了格式要同步调整)
        $today = date( 'Ymd' );
        
        // 获取原有meta_query(避免覆盖其他过滤条件)
        $meta_query = $query->get( 'meta_query' ) ?: array();
        
        // 添加日期过滤规则
        $meta_query[] = array(
            'key'     => 'custom_expiry_date', // 替换成你的ACF字段键名
            'value'   => $today,
            'compare' => '<=', // 过期即隐藏,可改成'<''=='等
            'type'    => 'DATE'
        );
        
        // 更新查询参数
        $query->set( 'meta_query', $meta_query );
    }
}

场景2:隐藏「所有带有该日期字段值」的商品

不管日期是什么,只要商品填了这个ACF字段就隐藏:

add_action( 'woocommerce_product_query', 'hide_products_with_acf_date_field' );
function hide_products_with_acf_date_field( $query ) {
    if ( ! is_admin() && $query->is_main_query() ) {
        $meta_query = $query->get( 'meta_query' ) ?: array();
        
        // 只显示没有该字段值的商品,等价于隐藏有值的商品
        $meta_query[] = array(
            'key'     => 'custom_expiry_date', // 替换成你的ACF字段键名
            'compare' => 'NOT EXISTS'
        );
        
        $query->set( 'meta_query', $meta_query );
    }
}

关键注意事项

  • ACF字段格式匹配:ACF日期字段默认存储为YYYYMMDD,如果你在ACF设置里改成了Y-m-d或者日期时间格式,一定要同步修改代码里的date()格式和type参数(比如日期时间用DATETIME)。
  • 后台不受影响:代码里加了!is_admin(),这样你在后台编辑商品时还能看到所有商品,不会被过滤。
  • 钩子选择:用woocommerce_product_query比pre_get_posts更精准,只会影响WooCommerce的商品查询,不会干扰博客文章等其他内容的查询。

内容的提问来源于stack exchange,提问作者Luke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:25:00