2017-06-13 77 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']->price = $value["variation"]["Price"];這個 $value['data']->set_price($value["variation"]["Price"]);我們只得到一個對象通過該對象的產品。我們可以調用set_price()函數來設置當前價格。

相關問題