2014-03-25 17 views
2

我使用Woocommerce购物车。我想更改商品页面上的价格。我用这个钩子来改变产品价格。Woocommerce钩子woocommerce_get_price如何在产品清单中使用?

woocommerce_get_price 

这是我的功能。

add_action('woocommerce_get_price','change_price_regular_member', 10, 2); 
function change_price_regular_member($price, $productd){ 
    return $price*2/100; 
} 

我想更改清单页面中所有产品的价格。

但是此功能不起作用是返回每个产品价格中的第一个产品价格。

我该如何使用这个钩子来改变每一个产品的价格?

谢谢。

回答

6

当我测试你的代码时,我的列表中的所有价格都会改变。 也许你的销售价格有问题。 WC_PRODUCT类具有不同的功能(包括根据销售状态获取价格的过滤器)。该get_price_html使用get_regular_priceget_price_suffix功能等

尝试:

add_filter('woocommerce_get_price','change_price_regular_member', 10, 2); 
add_filter('woocommerce_get_regular_price','change_price_regular_member', 10, 2); 
add_filter('woocommerce_get_sale_price','change_price_regular_member', 10, 2); 

您也可以尝试像http://club.orbisius.com/products/wordpress-plugins/woocommerce-extensions/orbisius-flex-price-woocommerce/的延伸。

更新

你的代码是不工作的每一个地方,当我通过PayPal

下订单似乎贝宝网关使用顺序类而不是产品类别来计算价格。在./includes/class-wc-order.php中,您可以找到诸如get_item_subtotal()之类的功能,它有一个过滤器apply_filters('woocommerce_order_amount_item_subtotal', $price, $this);。尝试使用这些,例如:

  add_filter('woocommerce_order_amount_item_subtotal','change_price_regular_member', 10, 2); 
+0

嘿,贝斯你能帮助我知道如何在结帐页面上触发该过滤器吗? –

+0

AFAIK这些过滤器(将它们添加到你的function.php)也适用于结帐 –

+0

亲爱的你的代码不工作,当我通过贝宝订单返回原价请帮助? –

相关问题