Я использую плагины WooCommerce Bookings & WooCommerce Vendors и хочу получить информацию о бронировании и поставщике в Webhook (при подтверждении заказа) вместе с информацией о заказе для отправки третьему лицу.
В настоящее время веб-крючок «Заказ создан» содержит только сведения о заказе продукта (не «Booking & Vendor»).
Я много раз искал разные ответы и пытался go найти несколько разных путей (ввод в веб-крючок). непосредственно против add_order_item_meta.
Вот один из способов, которые я пробовал:
add_action('woocommerce_add_order_item_meta', 'add_order_item_meta', 10, 2);
function add_order_item_meta($item_id, $values) {
// Get order id to get booking details
global $post;
$order = wc_get_order( $post->ID );
$order_id = $order->get_id();
$items = $order->get_items();
$booking_data = new WC_Booking_Data_Store();
$booking_ids = $booking_data->get_booking_ids_from_order_id( $order_id );
if ( is_array( $booking_ids ) && count( $booking_ids ) > 0 ) {
foreach ( $booking_ids as $booking_id ) {
$booking = get_wc_booking( $booking_id );
$booking_product = $booking->get_product()->get_title()
$booker_start_date = $booking->get_start_date();
$booker_end_date = $booking->get_end_date();
if ( ! empty( $booking_id ) ){
woocommerce_add_order_item_meta($item_id, "Booking Title", $booking_product);
}
if ( ! empty( $booking_id ) ){
woocommerce_add_order_item_meta($item_id, "Booking ID", $booking_id);
}
if ( ! empty( $booker_start_date ) ){
woocommerce_add_order_item_meta($item_id, "Booking Start Date", $booker_start_date);
}
if ( ! empty( $booker_end_date ) ){
woocommerce_add_order_item_meta($item_id, "Booking End Date", $booker_end_date);
}
}
}
Результатом этого является большой массив заказов, которые были сделаны под пользователем, поэтому кажется, что $ order_id не передается в $ bookings_id должным образом.
Кроме того, по какой-то причине я не смог получить $items = $order->get_items();
, поскольку я продолжаю получать Uncaught Error: Call to a member function get_items() on boolean
. Я хочу использовать это, чтобы получить электронная почта поставщика.
Я бы предпочел веб-крюк, а не API, потому что похоже, что вы не можете фильтровать бронирование через API (ie вам нужно получить Все заказы).
Рад получить любое руководство о том, как лучше к нему подойти.
Спасибо, Энди