#php #wordpress #woocommerce #hook-woocommerce
#php #wordpress #woocommerce #перехват-woocommerce
Вопрос:
почему не удается получить идентификатор заказа в новом порядке?
Этот код не работает
add_action( 'woocommerce_new_order', 'get_order_details_woo', 1, 1 );
function get_order_details_woo ($order_id)
{
$order = wc_get_order( $order_id );
foreach ($order->get_items() as $item_key => $item_values):
$item_id = $item_values->get_id();
$item_data = $item_values->get_data();
$product_name = $item_data['name'];
//echo $product_name;
endforeach;
}
Но этот код работает
add_action( 'woocommerce_new_order', 'get_order_details_woo', 1, 1 );
function get_order_details_woo ()
{
$order = wc_get_order( 100);
foreach ($order->get_items() as $item_key => $item_values):
$item_data = $item_values->get_data();
$product_name = $item_data['name'];
//echo $product_name;
endforeach;
}
Как получить идентификатор в новом заказе?
Получить новые детали заказа, если у меня нет идентификатора заказа?
Комментарии:
1.Если вы посмотрите на исходный код, то
$order_id
он включен в подключенную функцию в качестве аргумента, точно так же, как в вашем первом коде. Итак, проблема в чем-то другом… Почему вы используете этот код? и для чего?
Ответ №1:
Вы получаете идентификатор заказа с помощью этого перехватчика, но кажется, что заказ только что создан в этот момент, еще без товарных позиций. Вы можете проверить это с помощью var_dump.
попробуйте другой захват:
add_action( 'woocommerce_checkout_create_order', 'get_order_details_woo', 1, 1 );
этот параметр запускается сразу после того, как объект order получит свои данные, и до того, как они будут сохранены в базе данных. Вам не нужно извлекать идентификатор заказа здесь, потому что вы получаете объект order напрямую.
Ответ №2:
add_action( ‘woocommerce_checkout_update_order_meta’, ‘get_order_details_woo’, 10, 2 ); функция get_order_details_woo($order_id, $data) { }