Woocommerce Hook woocommerce_get_price如何在产品列表中使用?

Ren*_*unt 3 wordpress woocommerce

我使用Woocommerce购物车.我想在列表页面中更改产品价格.我使用这个钩子来改变产品价格.

woocommerce_get_price
Run Code Online (Sandbox Code Playgroud)

这是我的功能.

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

我想在列表页面中更改所有产品的价格.

但是这个功能不起作用是在每个产品价格中返回第一个产品价格.

我怎样才能用这个钩子来改变每个产品的价格?

谢谢.

Bas*_*sen 7

当我测试您的代码时,我的列表中的所有价格都会发生变化 也许你的销售价格有问题.本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);
Run Code Online (Sandbox Code Playgroud)

您还可以尝试http://club.orbisius.com/products/wordpress-plugins/woocommerce-extensions/orbisius-flex-price-woocommerce/这样的扩展程序.

更新

当我通过PayPal下订单时,您的代码无法正常运行

似乎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);
Run Code Online (Sandbox Code Playgroud)


Wil*_*ill 5

woocommerce_get_price自版本 3.0.0 起已弃用

woocommerce_product_get_price代替使用。