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

WooCommerce后台仅为店铺管理员显示待审核产品并修复代码报错

错误原因及修复方案

你遇到的语法错误及原有代码问题如下:

  • 第一个if判断语句缺少闭合右括号),直接触发语法解析错误
  • 角色判断逻辑错误:$current_user->shop_manager不是用户对象的合法属性,判断用户角色需要读取$current_user->roles数组
  • author__in参数需要传入数组格式,直接传用户ID不符合参数要求
  • 原有逻辑没有实现仅展示pending状态商品、隐藏回收站的核心需求

修复后完整实现代码

将以下PHP代码添加到当前主题functions.php文件或自定义功能插件中即可:

function filter_shop_manager_products($query) {
    // 仅在后台商品列表的主查询场景生效
    if (!is_admin() || !$query->is_main_query() || $query->get('post_type') !== 'product') {
        return $query;
    }

    $current_user = wp_get_current_user();
    // 超级管理员不受限制,直接返回
    if (in_array('administrator', $current_user->roles)) {
        return $query;
    }

    // 仅对店铺管理员角色做过滤
    if (in_array('shop_manager', $current_user->roles)) {
        // 仅展示待审核状态商品,自动排除回收站、草稿、已发布等其他所有状态
        $query->set('post_status', 'pending');
    }

    return $query;
}
add_action('pre_get_posts', 'filter_shop_manager_products');

CSS优化建议

原有CSS可以保留用来隐藏多余的筛选按钮和操作项,调整为更规范的写法避免样式被覆盖:

.current,
.draft,
.publish,
.search-box,
.byorder,
.tablenav.top,
.page-title-action {
    display: none !important;
}

验证说明

替换代码后切换shop_manager角色账号登录后台即可看到效果,超级管理员账号不受任何过滤限制,可正常查看所有状态的商品。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:27:01