WooCommerce默认的产品页面库存显示逻辑仅展示可售库存,管理员如果需要核对实际总库存、已售库存等数据,往往需要切换到订单页面统计,操作比较繁琐。通过自定义代码可以针对管理员角色,在产品前台和后台编辑页面额外显示实际库存相关的完整数据。

实现原理说明
整个功能的核心是通过WordPress的钩子机制,判断当前访问用户的角色是否为管理员,再在对应的产品页面位置追加库存数据。主要用到的技术点包括用户角色判断、WooCommerce产品对象方法调用、钩子函数挂载。
核心判断逻辑
首先需要区分当前用户的权限,只有管理员角色才会触发额外库存显示的逻辑,避免普通用户或访客看到敏感库存数据。WooCommerce的产品对象提供了获取库存相关数据的标准方法,我们可以直接调用这些方法拿到准确数值。
后台产品编辑页显示实际库存
后台产品编辑页的库存信息在woocommerce_product_options_stock钩子对应的位置输出,我们可以挂载自定义函数到这个钩子,追加实际库存的显示内容。
将以下代码添加到当前主题的functions.php文件中:
// 后台产品编辑页给管理员显示实际库存
add_action('woocommerce_product_options_stock', 'wc_admin_show_actual_stock');
function wc_admin_show_actual_stock() {
// 判断当前用户是否为管理员
if (!current_user_can('manage_options')) {
return;
}
global $post;
// 获取产品对象
$product = wc_get_product($post->ID);
if (!$product) {
return;
}
// 获取库存相关数据
$stock_quantity = $product->get_stock_quantity(); // 当前可售库存
$total_sales = $product->get_total_sales(); // 总销量
$actual_stock = $stock_quantity + $total_sales; // 实际总库存
// 输出显示内容
echo '<p class="form-field">';
echo '<label>实际总库存(仅管理员可见)</label>';
echo '<span class="description">总销量:' . $total_sales . ',当前可售:' . $stock_quantity . ',实际总库存:' . $actual_stock . '</span>';
echo '</p>';
}前台产品页显示实际库存
如果需要让管理员在前台产品详情页也能看到实际库存,可以挂载函数到woocommerce_single_product_summary钩子,在价格或库存信息下方追加显示内容。
继续在functions.php中添加以下代码:
// 前台产品页给管理员显示实际库存
add_action('woocommerce_single_product_summary', 'wc_frontend_admin_show_actual_stock', 25);
function wc_frontend_admin_show_actual_stock() {
// 判断当前用户是否为管理员
if (!current_user_can('manage_options')) {
return;
}
global $product;
if (!$product) {
return;
}
// 获取库存相关数据
$stock_quantity = $product->get_stock_quantity();
$total_sales = $product->get_total_sales();
$actual_stock = $stock_quantity + $total_sales;
// 输出显示内容
echo '<div class="admin-actual-stock" style="color:#ff5722;margin:10px 0;font-size:14px;">';
echo '管理员可见:总销量' . $total_sales . ',可售库存' . $stock_quantity . ',实际总库存' . $actual_stock;
echo '</div>';
}注意事项
- 代码需要添加到当前使用的主题
functions.php中,如果后续更换主题,需要重新添加代码,也可以使用自定义插件的方式存放代码避免丢失。 - 如果用户修改了管理员角色的权限标识,需要调整
current_user_can中的参数,确保权限判断准确。 - 部分定制版的WooCommerce主题可能修改了默认的钩子位置,如果代码不生效,可以调整钩子的优先级或者更换对应的WooCommerce钩子。
- 不建议给普通用户开放这个权限,避免泄露库存相关的商业数据。
效果验证
添加代码后,使用管理员账号登录站点,进入后台产品编辑页,在库存设置区域就能看到新增的实际库存信息;访问前台产品详情页,在摘要区域也会显示对应的库存数据。切换为普通用户或退出登录后,这些额外信息不会显示,符合权限控制的要求。
WooCommerce产品库存管理员权限WordPress钩子自定义代码修改时间:2026-06-06 15:31:20