钩入woocommerce_variation_price_html wordpress

时间:2013-12-18 21:42:43

标签: wordpress woocommerce

我正在开发一个针对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中使用这个钩子的经验?关于那个钩子的文档并不多。

非常感谢任何帮助!

4 个答案:

答案 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;
}

截图:

第一个例子

example of first filter

第二个例子

example of second filter

像魔术一样工作!

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;
}