11ответ(ов) в теме
не в сети давно
На сайте с
Участник
Тем 10
Сообщения 28
1
14:29
Версия WP-Recall: 16.18.20

Добрый день. Пересмотрел весь форум но так и не нашел ответ на свой вопрос.
Как можно добавлять товар в корзину через 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:30loki99928@yandex.ruПричина: не указано
04.06.2020 14:30loki99928@yandex.ruПричина: не указано
04.06.2020 14:30loki99928@yandex.ruПричина: не указано
04.06.2020 14:31loki99928@yandex.ruПричина: не указано
0
не в сети давно
На сайте с
Участник
Тем 10
Сообщения 28
2
14:46

так. есть подозрения что класс не определен. Все кастомный функции через function.php цепляю. На какой хук нужно повесить подключение своих функций?

0
не в сети давно
На сайте с
Участник
Тем 10
Сообщения 28
3
14:55

"<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>"

0
Preci
не в сети 2 месяца
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1644
4
15:10

/wp-content/themes/egrn/inc/inc_ajax/create_goods.php(20): Rcl_Cart->add_product(57)

Ожидается 2 параметра, а передается 1

в create_goods.php на 20 строке

0
не в сети давно
На сайте с
Участник
Тем 10
Сообщения 28
5
17:48

да я заметил. только что за параметры? доки можно где посмотреть? А то я уже думаю просто кастомезировать стандартную кнопку но неудобно в работе будет

0
Вова (Otshelnik-Fm)
не в сети 2 недели
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18653
6
18:10

Здравствуйте.

Тему перенес в "кастомизации".

Посмотрите поиском по форуму

Вы не можете просматривать опубликованные ссылки
0
не в сети давно
На сайте с
Участник
Тем 10
Сообщения 28
7
20:16

К сожалению форум не помог. Шаблон новый. Плагинов на нем нет. Не считая 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');

Завтра еще покавыряюсь если будут результаты отпишусь

0
Андрей CS
не в сети 20 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16928
8
20:26

Посмотрите работу функции rcl_add_to_cart в файле functions-ajax.php и в файле scripts.js, как именно там добавляет товар, возможно поможет дополнить свою функцию.

0
не в сети давно
На сайте с
Участник
Тем 10
Сообщения 28
9
12:35

использовал rcl_ajax в js хоть и быстро но что то мне этот вариант не нравится)

0
не в сети давно
На сайте с
Участник
Тем 10
Сообщения 28
10
12:36

Разобрался в проблеме. Помимо добавления на стороне сервера

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:36loki99928@yandex.ruПричина: не указано
06.06.2020 09:43loki99928@yandex.ruПричина: не указано
06.06.2020 09:43loki99928@yandex.ruПричина: не указано
06.06.2020 09:44loki99928@yandex.ruПричина: не указано
0
не в сети давно
На сайте с
Участник
Тем 10
Сообщения 28
11
09:44

Может пригодится кому. Можно теперь закрывать

0
Тема закрыта. Публикация новых сообщений запрещена.