В Woocommerce я использовал jQuery
для расчета пользовательской цены на страницах одного продукта, и теперь мне нужно передать это значение в корзину.
Желаемое поведение заключается в передаче новой цены, полученной из скрытого поля, в цену товара в корзине.
Вот мой настоящий код:
// Hidden input field in single product page
add_action( 'woocommerce_before_add_to_cart_button', 'custom_hidden_product_field', 11, 0 );
function custom_hidden_product_field() {
echo '<input type="hidden" id="hidden_field" name="custom_price" class="custom_price" value="">';
}
// The code to pass this data to the cart:
add_action( 'woocommerce_add_cart_item_data', 'save_custom_fields_data_to_cart', 10, 2 );
function save_custom_fields_data_to_cart( $cart_item_data, $product_id ) {
if( ! empty( $_REQUEST['custom_price'] ) ) {
// Set the custom data in the cart item
$cart_item_data['custom_data']['custom_price'] = $_REQUEST['custom_price'];
$data = array( 'custom_price' => $_REQUEST['custom_price'] );
// below statement make sure every add to cart action as unique line item
$cart_item_data['custom_data']['unique_key'] = md5( microtime().rand() );
WC()->session->set( 'custom_data', $data );
}
return $cart_item_data;
}
И проверьте оба $data
и $cart_item_data
, чтобы убедиться, что они оба возвращают custom_price
данные, вычисляемые на странице.
Однако я перехожу к просмотру корзины, а значение позиции по-прежнему равно 0.
Я установил var
Равный WC()->session->set( 'custom_data', $data );
а затем var_dump
Чтобы проверить его, но это возвращает NULL
, что может быть просто то, что он возвращается, я не совсем уверен, потому что я никогда не использовал это.
Я также должен добавить, что у меня regular_price
в бэкенде продукта установлено значение 0. Когда я стираю это (и оставляю его пустым), я возвращаю ошибку:
Предупреждение. Нечисловое значение обнаружено в C: \ xampp \ htdocs \ my-transfer-source \ wp-content \ plugins \ Woocommerce \ Включает \ Class-WC-Scores.php на линии 85
Мне интересно, не пропустил ли я что-то здесь, и может ли кто-нибудь пролить свет на это? Спасибо
Привет, спасибо за ответ, но кроме моего скрытого поля, это мой полный код, поэтому я не уверен, какой другой код хочешь.
Желаемое поведение — передать новую цену, полученную из скрытого поля, в цену корзины Woocommerce. Имеет ли это смысл? Я добавлю это к вопросу.