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

时间:2014-03-25 13:05:07

标签: wordpress woocommerce

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

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

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

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

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

谢谢。

2 个答案:

答案 0 :(得分: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);

您还可以尝试使用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);

答案 1 :(得分:2)

//CURL request to fetch feed when getting AJAX call function import_feed() { $url = "http://url-to-jsonfeed.com"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $data = json_decode($response, true); create_posts($data); wp_die(); } add_action('wp_ajax_import_feed', 'import_feed'); //Loop through JSON data and create post function create_posts($jsonfeed) { $data = $jsonfeed['Report']; if (!empty($data) ) { foreach ($data as $entry) { //Set post data before creating post $post_data = array( 'post_title' => $entry['Entry_Title'], 'post_name' => $entry['EntryID'], 'post_status' => 'publish', 'post_author' => 1, 'post_type' => 'entries' ); if (get_page_by_title($post_data['post_title'], 'entries') == null && empty(get_posts(array('post_type' => 'entries', 'name' => $post_data['post_name'])))) { wp_insert_post($post_data, $wp_error); } else if (!empty(get_posts(array('post_type' => 'entries', 'name' => $post_data['post_name'])))) { $post = get_posts(array('post_type' => 'entries', 'name' => $post_data['post_name'])); $post_id = $post[0]->ID; $post_data['ID'] = $post_id; wp_update_post($post_data, $wp_error); } } } } 自版本3.0.0起已弃用

改为使用woocommerce_get_price