Intereting Posts
Разметка в пользовательском цикле не работает Как создать объект Crypt :: RSA из модуля, экспоненты и частного экспонента? MySQLi подготовил оператор в цикле while PHPExcel Проверьте, существует ли листинг Поиск последнего сообщения из таблицы, сгруппированного пользователем в mysql Обходной путь для suhosin.mt_srand.ignore для последовательного перетасовки массива в PHP? Как считать простое число от 0 до 100000000 менее чем за 1 минуту в PHP? Как переписать URL-адрес, чтобы удалить знак вопроса Как разделить DATE и TIME из DATETIME в MySQL Использование SimpleHtmlDom, как удалить и заменить определенный атрибут Когда использовать интерфейсы в PHP Chrome добавляет «- вложение» в загруженный файл Могу ли я сделать более одного запроса на связку? Как изменить цвет ссылок в соответствии со страницей при использовании PHP PHP – расширение метода, например, расширение класса

Захват WooCommerce для создания заказа от администратора

В моем настраиваемом плагине (работающем в WooCommerce 2.6.x и 3.x) мне нужно получить идентификатор заказа при создании нового заказа. Я пробовал разные крючки, но они работают только тогда, когда клиент создает заказ, а не когда заказ создается из admin.

Я пытался:

  • woocommerce_new_order
  • woocommerce_thankyou
  • woocommerce_checkout_order_processed
  • woocommerce_checkout_update_order_meta

Обновить

Наконец, я использовал это:

add_action('wp_insert_post', function($order_id) { if(!did_action('woocommerce_checkout_order_processed') && get_post_type($order_id) == 'shop_order' && validate_order($order_id)) { order_action($order_id); } }); 

где validate_order :

 function validate_order($order_id) { $order = new \WC_Order($order_id); $user_meta = get_user_meta($order->get_user_id()); if($user_meta) return true; return false; } 

Благодаря validate_order действие не выполняется, когда вы начинаете создавать заказ. Я использую !did_action('woocommerce_checkout_order_processed') потому что я не хочу, чтобы действие выполнялось, если заказ создан клиентом (у меня есть конкретное действие для этого, используя woocommerce_checkout_order_processed ).

Solutions Collecting From Web of "Захват WooCommerce для создания заказа от администратора"

Если вы используете страницу администратора .../wp-admin/post-new.php?post_type=shop_order чтобы создать новый порядок, тогда не может быть крюка WooCommerce для этого, так как этот порядок создается ядром WordPress.

Тем не менее, действие WordPress 'save_post_shop_order' будет 'save_post_shop_order' с $post_ID который является идентификатором заказа.

См. Функцию wp_insert_post() в ...\wp-includes\post.php .

Вы можете использовать этот крючок. woocommerce_process_shop_order_meta запускается, когда заказ создается вручную из администратора WordPress.