11ответ(ов) в теме
Добрый день. Пересмотрел весь форум но так и не нашел ответ на свой вопрос.
Как можно добавлять товар в корзину через ajax?
Такая конструкция не срабатывает
if (class_exists('Rcl_Cart')) { $product_id = 57; $add_cart = new Rcl_Cart(); $add_cart->add_product( $product_id, array( 'quantity' => 1 ) ); }
Может сталкивался кто с такой проблемой?
Если добавлять через кнопку вставленную
<?php global $post; $CartButton = new Rcl_Cart_Button_Form(array( 'product_id' => $post->ID )); echo $CartButton->cart_form(); ?>
То срабатывает нормально. Но мне по требованию нужно добавлять сразу список товаров
Редакции сообщения
04.06.2020 14:30Причина: не указано
04.06.2020 14:30Причина: не указано
04.06.2020 14:30Причина: не указано
04.06.2020 14:31Причина: не указано
"<style type="text/css"> .wp-die-message { display: none; } </style><link rel="stylesheet" href="https://cc99639.tmweb.ru/wp-includes/css/dashicons.css" media="all" /><link rel="stylesheet" href="https://cc99639.tmweb.ru/wp-content/plugins/query-monitor/assets/query-monitor.css" media="all" /><div data-qm="qm"><div id="qm-fatal" data-qm-message="Uncaught Error: Too few arguments to function Rcl_Cart::add_product(), 1 passed in /home/c/cc99639/wordpress/public_html/wp-content/themes/egrn/inc/inc_ajax/create_goods.php on line 20 and exactly 2 expected" data-qm-file="wp-content/plugins/wp-recall/add-on/commerce/classes/class-rcl-cart.php" data-qm-line="60"><div class="qm-fatal-wrap"><p><span class="dashicons dashicons-warning" aria-hidden="true"></span> <b>Fatal error</b>: Uncaught Error: Too few arguments to function Rcl_Cart::add_product(), 1 passed in /home/c/cc99639/wordpress/public_html/wp-content/themes/egrn/inc/inc_ajax/create_goods.php on line 20 and exactly 2 expected<br>in <b>/home/c/cc99639/wordpress/public_html/wp-content/plugins/wp-recall/add-on/commerce/classes/class-rcl-cart.php</b> on line <b>60</b></p><p>Стек вызовов:</p><ol><li><code>Rcl_Cart::add_product()</code><br><span class="qm-info qm-supplemental">wp-content/themes/egrn/inc/inc_ajax/create_goods.php:20</span></li><li><code>create_goods_callback()</code><br><span class="qm-info qm-supplemental">wp-includes/class-wp-hook.php:287</span></li><li><code>WP_Hook::apply_filters()</code><br><span class="qm-info qm-supplemental">wp-includes/class-wp-hook.php:311</span></li><li><code>WP_Hook::do_action()</code><br><span class="qm-info qm-supplemental">wp-includes/plugin.php:478</span></li><li><code>do_action()</code><br><span class="qm-info qm-supplemental">wp-admin/admin-ajax.php:175</span></li></ol></div><h2>Query Monitor</h2></div></div><p>На сайте возникла критическая ошибка.</p><p><a href="https://ru.wordpress.org/support/article/debugging-in-wordpress/">Узнайте больше про отладку в WordPress.</a></p><script type="text/javascript">window.location.href="https://cc99639.tmweb.ru/wp-admin/admin.php?page=manage-addon-recall&update-addon=error-activate&error-text=Add-on <b>COMMERCE</b> has caused an error and was disabled. The error text: <br>Fatal Error: Uncaught ArgumentCountError: Too few arguments to function Rcl_Cart::add_product(), 1 passed in /home/c/cc99639/wordpress/public_html/wp-content/themes/egrn/inc/inc_ajax/create_goods.php on line 20 and exactly 2 expected in /home/c/cc99639/wordpress/public_html/wp-content/plugins/wp-recall/add-on/commerce/classes/class-rcl-cart.php:60 Stack trace: #0 /home/c/cc99639/wordpress/public_html/wp-content/themes/egrn/inc/inc_ajax/create_goods.php(20): Rcl_Cart->add_product(57) #1 /home/c/cc99639/wordpress/public_html/wp-includes/class-wp-hook.php(287): create_goods_callback('') #2 /home/c/cc99639/wordpress/public_html/wp-includes/class-wp-hook.php(311): WP_Hook->apply_filters('', Array) #3 /home/c/cc99639/wordpress/public_html/wp-includes/plugin.php(478): WP_Hook->do_action(Array) #4 /home/c/cc99639/wordpress/public_html/wp-admin/admin-ajax.php(175): do_action('wp_ajax_create_...') #5 {main} thrown in /home/c/cc99639/wordpress/public_html/wp-content/plugins/wp-recall/add-on/commerce/classes/class-rcl-cart.php:60<br>";</script>"
К сожалению форум не помог. Шаблон новый. Плагинов на нем нет. Не считая Carbon Fields, All In One WP Security,
Query Monitor. Но они на кеш не влияют. По мимо этого в functions вообще прописано
function shapeSpace_add_header() { header("Cache-Control: no-store, no-cache, must-revalidate"); } add_action('init', 'shapeSpace_add_header');
Завтра еще покавыряюсь если будут результаты отпишусь
Разобрался в проблеме. Помимо добавления на стороне сервера
if (class_exists('Rcl_Cart')) { $Cart = new Rcl_Cart(); $args = array(); $args['quantity'] = 1; $args['variations'] = false; $Cart->add_product($product_id,$args); $result = array( 'cart' => array( 'order_price' => $Cart->order_price, 'products_amount' => $Cart->products_amount, 'products' => $Cart->products ), 'product' => $Cart->get_product($product_id), ); $result = apply_filters('rcl_add_to_cart_result', $result); } wp_send_json($result);
Нужно на js еще в куки записывать результат
$.ajax({ url: object_info.ajaxurl, method: 'post', data: data, success: function (data) { console.log(data); $('a.goal-go-to-cart-btn .js-cart-count').text(data.cart.products[0].product_amount); jQuery.cookie( 'rcl_cart', JSON.stringify( data.cart.products ), { path: '/' } ); }, error: function (jqXHR, status, errorThrown) { } });
Редакции сообщения
05.06.2020 12:36Причина: не указано
06.06.2020 09:43Причина: не указано
06.06.2020 09:43Причина: не указано
06.06.2020 09:44Причина: не указано
Тема закрыта. Публикация новых сообщений запрещена.