如何在WooCommerce后台优惠券列表中显示自定义优惠券类型
WooCommerce优惠券列表显示自定义类型的解决方案
你之前的代码没生效,核心原因是用错了钩子——manage_shop_coupon_posts_custom_column是用来处理新增自定义列的内容渲染,而默认的「优惠券类型(type)」列有WooCommerce专门提供的钩子:woocommerce_admin_coupon_type_column_value,这才是修改该列显示内容的正确过滤器。
正确代码示例
add_filter('woocommerce_admin_coupon_type_column_value', 'custom_coupon_type_display_in_list', 10, 2); function custom_coupon_type_display_in_list($display_value, $coupon) { // 获取优惠券的折扣类型值 $discount_type = $coupon->get_discount_type(); // 匹配你的自定义类型,替换为对应显示文本 if ($discount_type === 'custom_option') { // 替换成你实际的自定义类型值 return '自定义选项'; // 替换成你要显示的文本 } // 其他默认类型保留WooCommerce原有显示 return $display_value; }
补充说明
- 如果你需要直接从数据库读取
discount_type元值(避免WooCommerce内置方法的潜在过滤),可以修改代码为:
add_filter('woocommerce_admin_coupon_type_column_value', 'custom_coupon_type_display_in_list', 10, 2); function custom_coupon_type_display_in_list($display_value, $coupon) { $discount_type = get_post_meta($coupon->get_id(), 'discount_type', true); switch ($discount_type) { case 'fixed_cart': return __('固定购物车折扣', 'woocommerce'); case 'percent': return __('百分比折扣', 'woocommerce'); case 'fixed_product': return __('固定商品折扣', 'woocommerce'); case 'custom_option': return '自定义选项'; default: return $display_value; } }
- 请确保代码中的
custom_option与你添加到下拉框的自定义类型值完全一致,显示文本可根据需求自由修改。
内容的提问来源于stack exchange,提问作者Shahadat Hossain
相关产品推荐
相关产品推荐

