Ajax добавить в корзину на странице продукта - сообщение успеха Woocommerce [дубликат]

Когда объект передается по значению, он обычно помещается в стек. Вложение чего-то в стек требует знания того, насколько оно велико. При использовании полиморфизма вы знаете, что входящий объект реализует определенный набор функций, но вы, как правило, не имеете представления о размере объекта (и не обязательно, что это является частью выгоды). Таким образом, вы не можете поместить его в стек. Однако вы всегда знаете размер указателя.

Теперь не все идет в стек, и есть другие смягчающие обстоятельства. В случае виртуальных методов указатель на объект также является указателем на vtable (ы) объекта, которые указывают, где находятся методы. Это позволяет компилятору находить и вызывать функции независимо от того, с каким объектом он работает.

Другая причина в том, что очень часто объект реализуется вне вызывающей библиотеки и выделяется совершенно другим (и, возможно, несовместимым) менеджером памяти. Он также может иметь членов, которые не могут быть скопированы, или могут вызвать проблемы, если они были скопированы с другим менеджером. Возможны побочные эффекты при копировании и всевозможные другие осложнения.

В результате указатель - это единственный бит информации об объекте, который вы действительно правильно понимаете, и предоставляет достаточную информацию для выяснения где нужны другие бит.

0
задан Antony 22 February 2018 в 13:13
поделиться

1 ответ

Ok вставьте этот код в свои функции. Вы должны заменить переменную $ your_ajax_page_slug названием своей страницы, для которой вы хотите отключить функцию перенаправления на тележку. Убедитесь, что у вас есть опция «Включить AJAX, чтобы добавить в корзину кнопки на архивах», которые были отмечены в настройках.

add_filter( 'woocommerce_get_script_data', 'modify_woocommerce_get_script_data', 20, 2 );

function modify_woocommerce_get_script_data ( $params, $handle ) {
    global $wp;

    $page_slug = '';
    $your_ajax_page_slug = 'your-page-slug';
    $current_url = home_url( $wp->request );

    // Break the URL by the delimiter
    $url_pieces = explode('/', $current_url);

    // Get the page slug
    if( is_array( $url_pieces ) )
        $page_slug = end( $url_pieces );

    if( $handle == 'wc-add-to-cart' && $page_slug == $your_ajax_page_slug ) {
        $params['cart_redirect_after_add'] = false;
    }

    return $params;
}
0
ответ дан Andrew Schultz 15 August 2018 в 15:04
поделиться
  • 1
    Большое спасибо Андрею. Для того, чтобы заставить его работать, мне также пришлось активировать: «Включить AJAX добавить кнопки корзины в архивах». и это имеет смысл для меня. Однако вы знаете о любых возможных проблемах с обоими: «Перенаправление на страницу корзины после успешного добавления». и «Включить AJAX» добавить кнопки корзины на архивах ». включен? – Antony 22 February 2018 в 15:23
  • 2
    Ах, извините, вам нужны оба варианта. Обновит мой ответ. – Andrew Schultz 22 February 2018 в 15:30
  • 3
    Вы можете проверить оба параметра, WooCommerce не мешает вам это делать. Я не знаю, как настроен ваш сайт, поэтому я не могу сказать с какой-либо оправданием, что это создаст любые проблемы. Перед развертыванием убедитесь, что вы тестируете. – Andrew Schultz 22 February 2018 в 15:32
  • 4
    На данный момент все работает так, как ожидалось. Благодаря! – Antony 22 February 2018 в 15:35
  • 5
    Не беспокойтесь, сегодня я чему-то научился от этого, так что мы оба победим :) – Andrew Schultz 22 February 2018 в 15:36
Другие вопросы по тегам:

Похожие вопросы: