Добавьте пользовательскую цену и другие данные в корзину WooCommerceJquery

Программирование на jquery
Ответить Пред. темаСлед. тема
Гость
 Добавьте пользовательскую цену и другие данные в корзину WooCommerce

Сообщение Гость »


У меня есть специальная кнопка «Добавить в корзину», использующая Ajax в WooCommerce. Я протестировал его на продукте с установленной ценой, и он работает так, как ожидалось. Однако продукты можно настраивать, и цена будет варьироваться в зависимости от того, как они будут настроены. Я осмотрелся и, будучи новичком в разработке PHP и WP/WC, не уверен, что вижу что-нибудь, что мне поможет.

В настоящее время в файле functions.php моей активной дочерней темы есть две следующие функции:

add_action('wp_enqueue_scripts', 'enqueue_custom_add_to_cart_scripts'); функция enqueue_custom_add_to_cart_scripts() { if(function_exists('is_product') && is_product()) { wp_enqueue_script('custom_add_to_cart', get_stylesheet_directory_uri() . '/js/add-to-cart-ajax.js', array('jquery'), '1.0', true); wp_localize_script('custom_add_to_cart', 'wc_params_custom', массив( 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('nonce_custom_atc') )); } } add_action('wp_ajax_custom_add_to_cart', 'custom_add_to_cart'); add_action('wp_ajax_nopriv_custom_add_to_cart', 'custom_add_to_cart'); функция custom_add_to_cart() { $cart_item_key = ноль; if (isset($_POST['nonce']) && wp_verify_nonce($_POST['nonce'], 'nonce_custom_atc') && isset($_POST['product_id']) && $_POST['product_id'] > 0 && isset($_POST['количество']) && $_POST['количество'] > 0) { $cart_item_key = WC()->cart->add_to_cart( интервал($_POST['product_id']), интервал($_POST['количество']), 0, множество(), множество( 'высота'=>isset($_POST['высота']) ? sanitize_text_field($_POST['height']) : '', 'ширина'=>isset($_POST['ширина']) ? sanitize_text_field($_POST['width']) : '', 'totalArea'=>isset($_POST['totalArea']) ? sanitize_text_field($_POST['totalArea']) : '', 'стоимость'=>isset($_POST['стоимость']) ? sanitize_text_field($_POST['cost']) : '', 'numPanels'=>isset($_POST['numPanels']) ? sanitize_text_field($_POST['numPanels']) : '', 'enteredHeight'=>isset($_POST['enteredHeight']) ? sanitize_text_field($_POST['enteredHeight']) : '', 'enteredWidth'=>isset($_POST['enteredWidth']) ? sanitize_text_field($_POST['enteredWidth']) : '' ) ); } wp_die($cart_item_key ? "Ключ элемента корзины: {$cart_item_key}": "Ошибка: не добавлено!"); } Мой файл JS выглядит так:

jQuery( function($) { if (typeof wc_params_custom === 'не определено') вернуть ложь; константная ширина панели = 24; пусть высота = $('.height).val(); пусть ширина = $('.width).val(); пусть totalArea = ((высота/12) * (ширина/12)).toFixed(2); пусть стоимость = (totalArea * 7,95).toFixed(2); пусть numPanels = ширина/PANEL_WIDTH; $('.custom.add-to-cart').on('click', function(e) { е.preventDefault(); $.ajax({ тип: «ПОСТ», URL: wc_params_custom.ajax_url, данные: { 'действие': 'custom_add_to_cart', 'nonce': wc_params_custom.nonce, 'product_id': '123', 'количество': 1, 'height' : `${height} дюймов`, 'width' : `${width} дюймов`, 'totalArea': `${totalArea} кв. футов`, 'cost' : `$${cost}`, // меняется в зависимости от ввода высоты и ширины количество панелей, // Следующие два поля берут значения из входных данных в зависимости от того, выбраны дюймы или футы. Они не используются для каких-либо расчетов и предназначены только для передачи в корзину для информации о клиенте. 'enteredHeight': '8 футов', 'enteredWidth': '10 футов' }, успех: функция (ответ) { $(document.body).trigger("wc_fragment_refresh"); console.log(ответ); }, ошибка: функция (ошибка) { console.log(ошибка); } }); }); }); Приведенный выше код запускается простым:

Добавить в корзину (РЕДАКТИРОВАТЬ: я добавил, как я собираю входные данные измерений и обрабатываю вычисления в два блока кода выше.)

Очевидно, что я не могу поместить это на страницу продукта на серверной стороне, поэтому это должно исходить от пользователей. Мне также нужно, чтобы он отображался на странице корзины, чтобы покупатель мог видеть правильную сумму. Мне также нужно, чтобы totalArea, numPanels, enteredHeight и enteredWidth также отображались в корзине. Мне все еще нужно, чтобы height и width каким-то образом передавались производственной команде, но были скрыты от клиента. Поля enteredHeight и enteredWidth предназначены просто для того, чтобы показать клиенту размеры, которые он ввел на странице настройки, чтобы он не запутался.

Есть ли у кого-нибудь идеи, как правильно отображать эти пользовательские данные, а также данные, которые потребуются для производства?

Спасибо!

ОБНОВЛЕНИЕ: я нашел этот пост и попытался заставить его работать с моим кодом, но я все еще получаю сообщение Ошибка: не добавлено! из wp_die() . Хотя я думаю, что я на правильном пути. Добавление товара в корзину с индивидуальной информацией и ценой
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Jquery»