WooCommerce Bookings: получить данные о бронировании до создания заказа

Я использую плагин WooCommerce Bookings, и в настоящее время я хочу отобразить дополнительную информацию в сводке бронирования (варианты продукта).

Для этого я использую следующий хук: woocommerce_admin_booking_data_after_booking_details

Если мое бронирование связано с заказом, я получаю свои данные, используя функцию wc_get_order_item_meta

Я хотел бы иметь возможность получить свои данные, когда бронирование еще не заказано (просто добавляется в корзину, например).

При просмотре базы данных я увидел, что информация хранится в таблице woocommerce_sessions,

В хуке, который я использую, у меня есть доступ только к идентификатору бронирования.

Можно ли извлечь соответствующий сеанс из этого?

Спасибо

ОБНОВИТЬ

add_filter('woocommerce_admin_booking_data_after_booking_details', function ($booking_id) {
global $wpdb;
$booking = get_wc_booking($booking_id);
$order = $booking->get_order();
if ($order) {
foreach ($order->get_items() as $item) {
$item_meta = wc_get_order_item_meta($item->get_id(), '', FALSE);
/* Your code */
}
} else {
$table = $wpdb->prefix . 'woocommerce_sessions';
$condition = '%booking_id____' . $booking_id . '%';
$sql = "SELECT session_value FROM $table WHERE session_value LIKE '$condition'";
$query = maybe_unserialize($wpdb->get_var($sql));
$cart_items = maybe_unserialize($query['cart']);
foreach ($cart_items as $item) {
/* Your code */
}
}
}, 10, 1);

2

Решение

Вы можете получить доступ к этим данным с помощью WC_Cart метод get_cart() или же get_cart_from_session().

Вы должны использовать цикл foreach следующим образом:

foreach(WC()->cart->get_cart() as $cart_item_key => $item_values){
// Outputting the raw Cart items data to retrieve Bookings related data
echo '<pre>'; print_r($item_values);  echo '</pre>';
}

Или же

foreach(WC()->cart->get_cart() as $cart_item_key => $item_values){
// Outputting the raw Cart items data to retrieve Bookings related data
echo '<pre>'; print_r($item_values);  echo '</pre>';
}

Вы можете просто использовать правильный путь к данным и имена в этой подключенной функции (например, здесь будет отображаться страница корзины):

add_action( 'woocommerce_before_cart_table', 'my_custom_cart_items_raw_output');
function my_custom_cart_items_raw_output() {
foreach(WC()->cart->get_cart() as $cart_item_key => $item_values){
// Outputting the raw Cart items data to retrieve Bookings related data
echo '<pre>'; print_r($item_values);  echo '</pre>';
}
}

Код помещается в файл function.php вашей активной дочерней темы (или темы) или также в любой файл плагина.

Этот код протестирован и работает.

Найдя пути, имена и путь к данным, вы можете удалить его (только для тестирования и разработки)…

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]