如何在WooCommerce后台菜单添加自定义配送状态订单蓝色计数
实现WooCommerce后台菜单单独显示“已配送”订单计数
你现有的代码是把“已配送”订单数量合并到了“处理中”的计数里,要实现单独的蓝色计数徽章,需要直接修改后台菜单的输出,而非用合并计数的过滤器。下面是具体实现代码:
// 在WooCommerce后台菜单添加单独的"已配送"订单计数 function add_shipped_orders_count_to_admin_menu() { // 仅在后台且当前用户有订单管理权限时执行 if ( ! is_admin() || ! current_user_can( 'manage_woocommerce' ) ) { return; } // 获取已配送订单数量 $shipped_count = wc_orders_count( 'shipped' ); // 数量大于0才显示计数徽章 if ( $shipped_count > 0 ) { global $menu; // 定位WooCommerce订单菜单 foreach ( $menu as $key => $item ) { if ( $item[2] === 'edit.php?post_type=shop_order' ) { // 生成和系统默认样式一致的蓝色计数徽章 $badge = sprintf( '<span class="awaiting-mod count-%d"><span class="pending-count">%d</span></span>', $shipped_count, number_format_i18n( $shipped_count ) ); // 将徽章追加到菜单标题后方 $menu[ $key ][0] .= $badge; break; } } } } add_action( 'admin_menu', 'add_shipped_orders_count_to_admin_menu', 999 );
关键说明:
- 采用
admin_menu钩子并设置优先级999,确保在WooCommerce默认菜单生成完成后再进行修改 - 调用
wc_orders_count('shipped')直接获取自定义状态的订单数量 - 复用WooCommerce自带的
awaiting-mod样式类,保证计数徽章和系统默认的蓝色样式统一 - 仅当已配送订单数量大于0时才显示徽章,避免无意义的空标记
内容的提问来源于stack exchange,提问作者Nik7
相关产品推荐
相关产品推荐

