2017-06-13 3 views
0

我々は、ユーザーがこのページの彼らのギフトカードの購入のためのカスタム価格を入力できるようにするには、次のスクリプトを使用している:http://oceanapoke.staging.wpengine.com/pages/gift-card/WooCommerce:ショッピングカート内のカスタムユーザが設定した価格は集計しませ

問題は、カスタムということです最近のWooCommerce 3.0.8アップデートでは、カート自体の価格はもはや完全には正しくありません。

トラブルシューティングは私の車輪車の外で行われます。正しい方向に私を向けることができる人はいますか?

function wpr_custom_price() { 
    if (!class_exists('woocommerce') && !class_exists('rpgc_woocommerce')) 
     return; 

    } 
    add_action('plugins_loaded ', 'wpr_custom_price', 20); 


    // Adds the box to enter in the cost of the giftcard. 
    function wpr_add_remove_field() { 

     $currency_symbol = get_woocommerce_currency_symbol(); 
     $currency_pos = get_option('woocommerce_currency_pos'); 

     _e('Enter Gift Card Value'); 
?> 

<br /> 

<?php 
switch ($currency_pos) { 
    case 'left' : 
     echo '<strong>' . $currency_symbol . '</strong> <input 
name="rpgc_price" id="rpgc_price" placeholder="' . __('0.00', 
WPR_CP_CORE_TEXT_DOMAIN) . '" class="input-text" style="margin-bottom:5px; 
width: 100px;">'; 
    break; 
    case 'right' : 
     echo '<input name="rpgc_price" id="rpgc_price" placeholder="' . 
__('0.00', WPR_CP_CORE_TEXT_DOMAIN) . '" class="input-text" style="margin- 
bottom:5px; width: 100px;"><strong> ' . $currency_symbol . '</strong>'; 
    break; 
    case 'left_space' : 
     echo '<strong>' . $currency_symbol . ' </strong> <input 
name="rpgc_price" id="rpgc_price" placeholder="' . __('0.00', 
WPR_CP_CORE_TEXT_DOMAIN) . '" class="input-text" style="margin-bottom:5px; 
width: 100px;">'; 
    break; 
    case 'right_space' : 
     echo '<input name="rpgc_price" id="rpgc_price" placeholder="' . 
__('0.00', WPR_CP_CORE_TEXT_DOMAIN) . '" class="input-text" style="margin- 
bottom:5px; width: 100px;"> <strong> ' . $currency_symbol . '</strong>'; 
    break; 
} 

} 
add_action('rpgc_before_all_giftcard_fields', 'wpr_add_remove_field', 10); 


// Removes the display of the price on a gift card product 
function wpr_remove_price($price, $post) { 

$is_giftcard = get_post_meta($post->id, '_giftcard', true); 

if ($is_giftcard == "yes") 
    $price = ""; 

return $price; 
} 
add_filter('woocommerce_get_price_html', 'wpr_remove_price', 10, 2); 

**// Saves the Gift card amount on adding it to the cart 
function wpr_add_cart_item($data) { 
if (isset($_POST['rpgc_price'])) 
    $data['Price'] = (double) woocommerce_clean($_POST['rpgc_price']); 
return $data; 
} 
add_filter('rpgc_giftcard_data', 'wpr_add_cart_item', 10, 1); 
// Replaces the $0 price of the Gift card with the amount entered by the 
customer 
function wpr_add_custom_price($cart_object) { 
foreach ($cart_object->cart_contents as $key => $value) { 
    if(isset($value["variation"]["Price"])) 
     $value['data']->price = $value["variation"]["Price"]; 
} 
} 
add_action('woocommerce_before_calculate_totals', 'wpr_add_custom_price'); 
// Updates the price in the Mini Cart 
function wpr_minicart_price ($price, $cart_item, $cart_item_key){ 

$is_giftcard = get_post_meta($cart_item [ "product_id" ], '_giftcard', true 
); 
if ($is_giftcard == "yes") { 
    $price = woocommerce_price($cart_item ["variation"]["Price"]); 

} 
return $price; 
} 
add_filter('woocommerce_cart_item_price','wpr_minicart_price', 10, 3); 
add_filter('woocommerce_add_to_cart_validation', 
'my_custom_checkout_field_process', 10, 2); 

function my_custom_checkout_field_process($state, $product_id) { 

$is_giftcard = get_post_meta($product_id, '_giftcard', true); 
if ($is_giftcard == "yes") { 
    // Check if set, if its not set add an error. 
    if (! $_POST['rpgc_price']) { 
     wc_add_notice(__('Please enter a price for the gift card.'), 
'error'); 
     $state = false; 
    } 
} 
return $state; 
}** 

/** 
* Load the Text Domain for i18n 
* 
* @return void 
* @access public 
*/ 

    function rpgc_custprice_loaddomain() { 
    load_plugin_textdomain('rpgc-customprice', false, dirname(plugin_basename( 
    __FILE__)) . "/languages"); 
    } 
    add_action('init', 'rpgc_custprice_loaddomain'); 
?> 

答えて

0

新バージョンでは、我々は唯一、そのオブジェクトを通じて製品を持つオブジェクトを取得しているため、この $value['data']->set_price($value["variation"]["Price"]);でこのライン$value['data']->price = $value["variation"]["Price"];を交換してください。現在の価格を設定するにはset_price()関数を呼び出すことができます。

関連する問題