Есть ли способ подключиться к WooCommerce ДО добавления товара в корзину?

Кто-нибудь знает фильтр или ловушку, которые можно применить для вставки функции до того, как элемент будет вставлен в корзину с помощью WooCommerce? У меня такая же проблема, как и в этом сообщении:

Wordpress. Woocommerce. Перехватчик действия ПЕРЕД добавлением в корзину

Но комментарии этого OP, похоже, не работают или настолько расплывчаты, что я не могу заставить их работать, и я не могу найти документацию по woocommerce_before_add_to_cart.

Я пытаюсь просто отобразить ошибку, я добавлю логику, как только смогу выполнить правильное действие:

function checkProd(){
global $woocommerce;
$woocommerce->add_error( __('ERROR', 'woocommerce') );
return;
}
add_action( 'woocommerce_variable_add_to_cart', 'checkProd');

person RyGuy    schedule 15.04.2013    source источник


Ответы (2)


Лучшим ресурсом, который я нашел для хуков woocommerce, на самом деле является сам репозиторий, у них невероятно хорошо прокомментированный код, который очень читается.

https://github.com/woocommerce/woocommerce/blob/master/includes/wc-template-hooks.php.

Я уверен, что существует решение проблемы, которую вы пытаетесь решить в одном из следующих разделов:

/**
 * Product Add to cart
 *
 * @see woocommerce_template_single_add_to_cart()
 * @see woocommerce_simple_add_to_cart()
 * @see woocommerce_grouped_add_to_cart()
 * @see woocommerce_variable_add_to_cart()
 * @see woocommerce_external_add_to_cart()
 */
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
add_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30 );
add_action( 'woocommerce_grouped_add_to_cart', 'woocommerce_grouped_add_to_cart', 30 );
add_action( 'woocommerce_variable_add_to_cart', 'woocommerce_variable_add_to_cart', 30 );
add_action( 'woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30 );


/**
* Cart Actions
*
* @see woocommerce_update_cart_action()
* @see woocommerce_add_to_cart_action()
* @see woocommerce_load_persistent_cart()
*/
add_action( 'init', 'woocommerce_update_cart_action' );
add_action( 'init', 'woocommerce_add_to_cart_action' );
add_action( 'wp_login', 'woocommerce_load_persistent_cart', 1, 2 );

Если у вас по-прежнему возникают проблемы с использованием вышеупомянутых хуков, не стесняйтесь сообщить мне еще несколько деталей, и я могу попытаться помочь вам. Удачи!

person Nick Klufas    schedule 15.04.2013
comment
Спасибо за ответ, Ник. Я пытался использовать вышеуказанные действия, но пока безуспешно. Общая цель того, что я пытаюсь сделать, - если кто-то щелкает, чтобы добавить переменный продукт в корзину, функция проверяет, был ли уже добавлен конкретный продукт. Если требуемых продуктов еще нет в корзине, выдается ошибка и переменный продукт не добавляется в корзину. Я могу поработать над логикой позже, на этом этапе все, что я пытаюсь сделать, это получить действие для вызова функции и отобразить сообщение об ошибке, чтобы показать, что я подключил правильное действие. - person RyGuy; 16.04.2013
comment
Не могли бы вы опубликовать код, чтобы я мог посмотреть, как именно вы реализуете решение? add_action ('woocommerce_simple_add_to_cart', 'do_something_foo'); функция do_something_foo () {} - person Nick Klufas; 16.04.2013
comment
Текущая ссылка теперь github.com/woothemes/woocommerce / blob / master / includes / - person Ben; 18.02.2014

Мне нужно было выполнить некоторые действия перед добавлением в корзину, поэтому я сделал это так

add_action('init', function(){
    //if user clicked http://example.com/shop/?add-to-cart=42
    if(!is_admin() && isset($_REQUEST['add-to-cart'])){
        //do something
    }
});

$ _REQUEST используется для обработки запросов GET и POST.

person Maxime Ashurov    schedule 14.07.2016