使用自定义字段值替换WooCommerce产品库存状态
将自定义字段值填充到WooCommerce库存状态文本的过滤器示例
当然可以!下面我会给你一个贴合WooCommerce原生逻辑的完整示例,帮你把自定义字段的值整合到产品的库存状态文本中。
完整代码实现
// 替换WooCommerce库存状态文本,整合自定义字段值 add_filter('woocommerce_get_availability_text', 'custom_stock_status_text_with_custom_field', 10, 2); function custom_stock_status_text_with_custom_field($availability_text, $product) { // 获取当前产品ID $product_id = $product->get_id(); // 读取自定义字段值(这里用你提供的get_field函数,适配ACF等字段插件逻辑) $custom_stock_text = get_field('stock_status_custom', $product_id); // 仅当产品有库存且自定义字段有值时,修改库存文本 if ($product->is_in_stock() && !empty($custom_stock_text)) { $availability_text = sprintf('%s (%s)', __('In stock', 'woocommerce'), $custom_stock_text); } return $availability_text; }
代码说明
- 我们直接使用WooCommerce官方提供的
woocommerce_get_availability_text过滤器,这个钩子专门负责修改产品库存状态的显示文本,比自定义钩子更贴合插件原生逻辑。 - 针对你给出的数据库示例,代码生效后会呈现这样的效果:
- Product 1的库存文本变为:
In stock (5 days) - Product 2的库存文本变为:
In stock (10 days)
- Product 1的库存文本变为:
- 如果产品缺货或者自定义字段为空,会自动保留WooCommerce默认的库存文本逻辑,不会影响原有功能。
补充说明你提供的自定义过滤器
你之前写的customGetStockTextForProduct钩子属于自定义的逻辑钩子,但没有和WooCommerce的库存文本输出流程关联,所以无法直接生效。上面的代码直接对接WooCommerce原生过滤器,更高效也更符合插件开发规范。
内容的提问来源于stack exchange,提问作者LordMagik
相关产品推荐
相关产品推荐

