2017-04-20 15 views
2

私はWooCommerce Bookingsプラグインを使用していますが、現在予約要約(製品オプション)に追加情報を表示したいと考えています。私は、次のフックを使用します。これを行うにWooCommerce Bookings:注文が作成される前に予約データを取得する

:私の予約が順番にリンクされている場合、私は関数にwc_get_order_item_meta

を使って自分のデータを取得woocommerce_admin_booking_data_after_booking_details

を私は自分のデータを取得できるようにしたいと思いますご予約がまだ注文でない場合(バスケットに追加するだけです)

データベースを閲覧すると、情報がテーブルwoocommerce_sessionsに保存されていることがわかりました。

私が使用するフックでは、予約のIDにしかアクセスできません。

対応するセッションをこのセッションから取得できますか?あなたがWC_Cart方法get_cart()またはget_cart_from_session()と、このデータにアクセスすることができ

おかげ

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

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>'; 
} 

あなたはちょうどこのフック機能で正しいデータ・パスと名前を取得使用することができます(表示に発生します:

あなたはforeachループこの2つの方法を使用する必要がありますカートページなど):

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

関連する問題