我々は、ユーザーがこのページの彼らのギフトカードの購入のためのカスタム価格を入力できるようにするには、次のスクリプトを使用している: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');
?>