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

如何在WooCommerce中批量隐藏35美元价位产品或价格

WooCommerce 批量隐藏定价35美元产品实现方案

针对5000+量级的产品,无需逐个后台编辑,以下两种代码方案可直接使用,操作前请先备份站点数据库。


方案1:查询层自动过滤(不修改产品原始数据,性能最优)

该方案不会改动产品本身的发布状态、可见性配置,仅在前台产品列表、搜索结果的查询阶段直接排除定价35美元的产品,代码部署后即时生效,后续新增的同价位产品也会自动隐藏,适合需要灵活调整规则、不想改动原有产品数据的场景。

将以下代码添加到当前主题/子主题的functions.php文件,或通过代码片段插件插入即可:

// 前台WooCommerce产品列表排除35美元产品
add_action( 'woocommerce_product_query', 'custom_hide_35usd_products', 10, 2 );
function custom_hide_35usd_products( $query, $wc_query ) {
    $meta_query = $query->get( 'meta_query' );
    $meta_query[] = [
        'key'     => '_price',
        'value'   => 35,
        'compare' => '!=',
        'type'    => 'NUMERIC'
    ];
    $query->set( 'meta_query', $meta_query );
}

// 全局搜索、普通页面查询中同步排除这类产品
add_action( 'pre_get_posts', 'custom_hide_35usd_products_global' );
function custom_hide_35usd_products_global( $query ) {
    if ( is_admin() || !$query->is_main_query() ) return;
    if ( $query->get('post_type') !== 'product' ) return;

    $meta_query = $query->get( 'meta_query' );
    $meta_query[] = [
        'key'     => '_price',
        'value'   => 35,
        'compare' => '!=',
        'type'    => 'NUMERIC'
    ];
    $query->set( 'meta_query', $meta_query );
}

注意:如果站点启用了多币种插件,请确认35美元对应数据库存储的实际价格数值,避免汇率换算导致过滤偏差;如果产品设置了促销价,_price字段存储的是当前生效的实际售价,促销价为35美元的产品也会被同步隐藏。


方案2:批量修改产品可见性(一次执行长期生效,无需保留代码)

该方案会直接将所有定价35美元的产品标记为「目录隐藏+搜索隐藏」状态,批量操作跑完后即可删除代码,不需要长期在站点挂载逻辑。

警告:该操作会修改产品的可见性配置,执行前必须完成数据库备份,避免误操作无法恢复。

操作步骤:

  • 将以下代码临时添加到functions.php文件中
  • 以管理员身份登录站点,任意刷新一次前台页面,触发批量执行逻辑
  • 确认所有目标产品已隐藏后,立刻删除刚才添加的代码,避免重复执行
// 一次性批量处理35美元产品,执行完成后请立即删除本段代码
add_action( 'wp_loaded', 'custom_batch_hide_35usd_products' );
function custom_batch_hide_35usd_products() {
    // 仅允许管理员触发该操作
    if ( !current_user_can( 'manage_woocommerce' ) ) return;

    // 分批处理,每批1000个产品,避免一次性查询5000+产品导致内存溢出、请求超时
    $page = 1;
    $batch_size = 1000;
    do {
        $product_ids = wc_get_products([
            'status'  => 'publish',
            'limit'   => $batch_size,
            'page'    => $page,
            'price'   => 35,
            'return'  => 'ids',
        ]);

        foreach ( $product_ids as $pid ) {
            // 标记产品从目录、搜索中隐藏
            wp_set_object_terms( $pid, 'exclude-from-catalog', 'product_visibility' );
            wp_set_object_terms( $pid, 'exclude-from-search', 'product_visibility' );
            // 清理对应产品缓存
            wc_delete_product_transients( $pid );
        }

        $page++;
    } while ( count($product_ids) === $batch_size );
}

如果后续需要恢复这批产品,只需要把代码中设置可见性的逻辑替换为移除对应隐藏标记,以同样的方式执行一次即可。


注意事项

  • 不建议使用后台自带的批量编辑功能处理:WooCommerce后台默认批量编辑单次支持处理的产品数量上限很低,5000+产品手动翻页操作效率极差,还容易出现请求超时、处理中断的问题。
  • 代码生效后如果仍能看到目标产品,请清空站点的页面缓存、对象缓存、CDN缓存后再刷新验证。
  • 如果需要精确匹配35美元的正价产品、不隐藏同价位促销产品,可以将方案中查询的_price字段替换为_regular_price即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:09:17