我正在开发一个针对woocommerce的插件,并且遇到了“woocommerce_variation_price_html”,它可以让您了解单个产品的变化价格下降。所以创建了一个快速的功能来测试和玩游戏:
add_action( 'woocommerce_variation_price_html' , 'wholesale_variation_price' );
function wholesale_variation_price($term){
return '';
}
以上工作很好,并删除所有数据。但是,我正在尝试添加自定义meta_data来替换默认值。
所以我接着做了以下事情:
add_action( 'woocommerce_variation_price_html' , 'wholesale_variation_price' );
function wholesale_variation_price($term){
$var_price = get_post_meta( get_the_id(), '_my_price', true );
return $var_price;
}
这由于某种原因不起作用?有没有人有过在woocommerce中使用这个钩子的经验?关于那个钩子的文档并不多。
非常感谢任何帮助!
答案 0 :(得分:5)
如前所述,您可以阅读有关html过滤器的here。 也许你有变化的销售价格?然后在链接中,您可以看到总共有4个过滤器。适用:价格,促销价,免费且无价格。
此代码有效
add_filter( 'woocommerce_variation_sale_price_html', 'my_html', 10, 2);
add_filter( 'woocommerce_variation_price_html', 'my_html', 10, 2);
function my_html( $price, $variation ) {
return woocommerce_price(5);
}
这也是有效的。这允许您修改整个变体。阅读代码here
add_filter( 'woocommerce_available_variation', 'my_variation', 10, 3);
function my_variation( $data, $product, $variation ) {
$data['price_html'] = woocommerce_price(6);
return $data;
}
截图:
第一个例子
第二个例子
像魔术一样工作!
P.S。你可以在截图中看到这样的价格,因为我的设计就是这样显示它们。
编辑2016-09-10
版本2.6 +
由于woocommerce_price在2.6中已弃用,因此请将wc_price用于较新版本。
答案 1 :(得分:1)
// Display Price For Variable Product With Same Variations Prices
add_filter('woocommerce_available_variation', function ($value, $object = null, $variation = null) {
if ($value['price_html'] == '') {
$value['price_html'] = '<span class="price">' . $variation->get_price_html() . '</span>';
}
return $value;}, 10, 3);
答案 2 :(得分:0)
通过查看WooCommerce源代码,我发现woocommerce_variation_price_html
是一个过滤器,而不是一个动作。我不知道你是如何设法让你的示例代码像那样工作......很奇怪。
试试这个:
function wholesale_variation_price( $price, $product ) {
$var_price = get_post_meta( $product->variation_id, '_my_price', true );
return $var_price;
}
add_filter( 'woocommerce_variation_price_html', 'wholesale_variation_price', 10, 2 )
答案 3 :(得分:0)
我用它来修改变动价格,以显示每个变动产品的价格,不包括税前和之后的税:)
add_filter( 'woocommerce_available_variation', 'my_variation', 10, 3);
function my_variation( $data, $product, $variation ) {
$data['price_html'] = "<span class='ex-vat-price'>ex. " . woocommerce_price($variation->get_price_excluding_tax()) . "</span><br>";
$data['price_html'] .= "<span class='inc-vat-price'>inc. " . woocommerce_price($variation->get_price_including_tax()) . "</span>";
return $data;
}