私は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);
はあなたの助けをいただき、ありがとうございます。しかし、私は管理パネルにデータを表示したいのですが、カートにアクセスすることはできませんが、予約IDにしかアクセスできません。 – Antoine
@Antoineセッションからデータを取得する唯一の方法は、まずカートセッションのデータをすべて取得してから、複数のforeachループでこのデータを処理して 'reservetion_id'を取得する必要があります'reservetion_id'にあなたが望む正しいデータを関連付けることができます。これはすべてカスタム関数内で... $ wpdbを使ってSQLクエリのデータを取得することができます。しかし、これは静かに複雑になり、あなたは常に定義されたユーザーを得ることができなくなります。 – LoicTheAztec
わかりました。私はすべてのカートセッションを取得するためにカスタムクエリを実行する必要がありますかネイティブ関数がありますか? – Antoine