В этом уроке мы добавим проверку при оформлении заказа в WooCommerce – если у пользователя уже был создан заказ и не был оплачен, то не даём создать/оплатить ещё один.
На моём сайте есть также видеокурс по WooCommerce, в котором мы создаём тему для интернет-магазина с нуля на основе готовой HTML-вёрстки, вот ссылка на него.
Код ниже вы можете вставить в functions.php
вашей текущей темы или создать плагин для этого.
add_action( 'woocommerce_after_checkout_validation', 'truemisha_validate_if_unpaid_order', 25, 2 ); function truemisha_validate_if_unpaid_order( $fields, $errors ) { // если пользователя не авторизован, ничего не делаем if( ! is_user_logged_in() ) { return; } // получаем все заказы пользователя со статусом 'wc-pending' (В ожидании оплаты) и wc-processing (обработка) $pending_orders = get_posts( array( 'numberposts' => -1, 'meta_key' => '_customer_user', 'meta_value' => get_current_user_id(), // ID текущего пользователя 'post_type' => 'shop_order', 'post_status' => array( 'wc-pending', 'wc-processing' ) ) ); if ( $pending_orders ) { $errors->add( 'validation', 'Похоже, что у вас уже есть неоплаченный заказ, пожалуйста авторизуйтесь и оплатите его!' ); } }
woocommerce_after_checkout_validation
, например вот и вот.wc-pending
(В ожидании оплаты) и wc-processing
(В обработке). Вы можете сами решить, использовать оба из них или только первый.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.