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

WooCommerce如何在ACF复选框勾选时隐藏店铺页面的产品

你需要用WooCommerce的pre_get_posts钩子修改店铺页面的主查询逻辑,比在产品循环中逐条判断过滤的效率更高,也不会打乱分页规则,完整代码如下:

add_action( 'pre_get_posts', 'hide_selected_products_from_shop_page' );
function hide_selected_products_from_shop_page( $query ) {
    // 仅作用于前台店铺页面的主查询,不影响分类页、后台等其他查询
    if ( ! is_admin() && $query->is_main_query() && is_shop() ) {
        // Meta查询:排除所有勾选了remove复选框的产品
        $meta_query = $query->get( 'meta_query', [] );
        $meta_query[] = [
            'key'     => 'remove', // 你的ACF复选框字段名
            'value'   => '1', // 如果你的ACF复选框勾选后存储的值不是1,替换为对应值即可
            'compare' => '!=',
        ];
        $query->set( 'meta_query', $meta_query );
    }
}

注意事项

  • 如果你的ACF复选框设置的返回值是数组,将上面的compare参数改为NOT EXISTS即可,因为勾选后字段才会存值,未勾选的产品不存在该字段的meta记录
  • 这段代码需要放在你当前主题的functions.php文件,或者自定义插件的代码文件中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:24:03