如何在Woocommerce特定商品变体价格后添加自定义文本
问题排查
你的代码核心问题出在产品ID的获取逻辑上:
- 依赖
global $post获取产品ID不可靠:变体加载大多走ajax请求,这个场景下全局$post对象不存在或者值错误,导致判断条件永远不触发,自然不会追加后缀。 - 不需要额外拿全局ID,钩子传入的
$product变量本身就是可变产品的对象,直接调用get_id()方法就能拿到正确的父产品ID。
修正后代码
add_filter('woocommerce_available_variation', 'variation_price_custom_suffix', 10, 3 ); function variation_price_custom_suffix( $variation_data, $product, $variation ) { // 直接从传入的可变产品对象拿父产品ID,兼容ajax场景 $product_id = $product->get_id(); $product_array = array( 6547 ); // 此处填写需要添加后缀的可变产品ID if ( in_array( $product_id, $product_array ) ){ $variation_data['price_html'] .= ' <span class="price-suffix">' . __("TEST", "woocommerce") . '</span>'; } return $variation_data; }
生效检查
- 代码放到当前主题的
functions.php文件,或者自定义功能插件中 - 清除woocommerce缓存、网站缓存、浏览器缓存后再测试,因为变体数据有缓存机制
- 如果需要针对变体ID而非父产品ID判断,把
$product_id替换成$variation->get_id(),同时$product_array里填写对应变体ID即可。
内容的提问来源于stack exchange,提问作者drsD
相关产品推荐
相关产品推荐

