2016-10-07 10 views
0

私はwoocommerceで電子商取引を行っており、私は次のことをしなければなりません:functions.phpを使用してウォーコマースの価格を変更するには?

functions.phpですべての製品の価格を変更してください。私が作成した関数は、カートの値を除いて、サイトのすべての価格に対して機能します。私は、以下の機能を入れている

function woo_change_price($price, $product) { 
global $woocommerce, $product; 
$post_id = $product->id; 


$regular_price = get_post_meta($post_id, '_regular_price', true); 
$sale_price = get_post_meta($post_id, '_sale_price', true); 
$cupom_value = ($regular_price - $sale_price)/10; 
$price = $cupom_value; 

return $price; 

}

add_filter('woocommerce_get_price', 'woo_change_price', 99); 
add_filter('woocommerce_get_sale_price', 'woo_change_price', 99); 
add_filter('woocommerce_order_amount_item_subtotal', 'woo_change_price', 99); 

は私が必要なものは、通常価格と製品の販売の価格を取得し、基本を作ることであることを参照してください。数学の計算、2を引いて10で割った結果、私はその製品の新しい価格を設定しました。

この機能は、カート以外のすべてのサイトで完全に機能します。カートを見ると、すべての値が0(価格、合計、小計など)に設定されています。

なぜこのエラーが発生しているのかがわかりましたが、今修正する方法はありません。問題は次のとおりです。$ product-> idはカートで識別されず、0を返します。

これを修正するにはどうすればよいですか?

ありがとうございました!

答えて

0

これはあなたが探しているものかどうかはわかりませんが、が商品番号のに追加された後は、このようなものを使って商品の価格を変更できます。

add_action('woocommerce_before_calculate_totals', 'add_custom_price'); 

function add_custom_price($cart_object) { 
    foreach ($cart_object->cart_contents as $key => $value) { 
     $post_id = $value['product_id']; 
     $regular_price = get_post_meta($post_id, '_regular_price', true); 
     $sale_price = get_post_meta($post_id, '_sale_price', true); 
     $cupom_value = ($regular_price - $sale_price)/10; 
     $price = $cupom_value; 
     $value['data']->price = $price; 
    } 
} 

これはカートに直接影響します。アイテム自体の価格は変更されませんが、カート内のアイテムの価格は、定義した値を反映するように更新されます。

関連する問題