2017-04-20 123 views
2

我正在使用WooCommerce預訂插件,我目前正在尋找在預訂摘要(產品選項)中顯示其他信息。WooCommerce預訂:在創建訂單前檢索預訂數據

要做到這一點我用下面的掛鉤:woocommerce_admin_booking_data_after_booking_details

如果我的預訂鏈接到一個訂單,我使用功能wc_get_order_item_meta

找回我的數據我希望能夠找回我的數據當預訂還沒有訂單時(簡單地加入購物籃)

當瀏覽數據庫時,我看到信息存儲在表woocommerce_sessions中。

在我使用的鉤子中,我只能訪問預留的ID。

是否有可能從這個檢索相應的會話?

感謝

UPDATE

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); 

回答

1

您可以訪問到這些數據與WC_Cart方法get_cart()get_cart_from_session()

你應該使用foreach循環這2種方式:

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文件中e(或主題)或任何插件文件。

此代碼已經過測試並可正常工作。

一旦找到了方法,名稱和數據路徑,你可以將其刪除(只是爲了測試和開發)...

+0

謝謝您的幫助。但是,我想要在管理控制檯中顯示數據,我無法訪問購物車,但只能訪問預訂ID。 – Antoine

+0

@Antoine這將變得更加複雜,因爲唯一的方法是從會話中獲取數據......因此,您必須首先獲取所有購物車會話數據,然後在多個foreach循環中處理這些數據以獲取「reservetion_id」然後將每個'reservetion_id'關聯到你想要的正確數據......所有這些都在自定義函數中......你可以使用$ wpdb來獲取SQL查詢中的數據。但是這將會變得非常複雜,您將無法始終獲得定義的用戶。 – LoicTheAztec

+0

好吧,我明白了。我必須通過自定義查詢來檢索所有購物車會話或有本地功能? – Antoine