2017-08-09 2 views
1

私は、ユーザーが開始日から終了日までの日付範囲(日)を選択するサイクルレンタルサイトを開発しています。そして、私はそのデータをwc_add_order_item_meta()を使って注文のメタデータとして保存しています。注文アイテムのメタデータをどこからでも更新するには?

次に、注文ページを参照して日を変更または延長できるような機能をユーザーに提供したいと考えました。これもやっている、私はモーダルを作成し、モーダルの日付の変更に関するajaxリクエストを追加しました。

今、AJAXを使用してfunctions.phpにデータを送信しましたが、wc_update_order_item_meta()を使用してメタデータを更新しました。これは、すべての場所であまりにもではなく、更新され

add_action('wp_ajax_update_date_picker', 'update_date_picker'); 

function update_date_picker() { 
    $p_da = $_POST['p_date']; 
    $r_da = $_POST['r_date']; 
    $t_dy = $_POST['t_days']; 
    $order_id = $_POST['order_id']; 

    $order = wc_get_order($order_id); 

    foreach ($order->get_items() as $item_id => $item_obj) { 

     $pd = wc_update_order_item_meta($item_id, 'pickup_hidden_datetime', $p_da); 
     $rd = wc_update_order_item_meta($item_id, 'return_hidden_datetime', $r_da); 
     $td = wc_update_order_item_meta($item_id, 'return_hidden_days', $t_dy); 

     if($pd&&$rd&&$td){ 
      echo "Nice work, Bilal"; 
     } 
     die(); 
    } 

} 

:ここ

は次のように私の関数が見えます。つまり、リフレッシュすると、更新されたデータも表示されますが、ビューアイテムページを通過すると、更新されたデータではなく古いデータのみが表示されます。管理者の注文をチェックしても、そこに古いメタデータが表示されています。

ありがとうございます。アドバイスありがとうございます。

+0

あなたのwoocommerceのバージョンは? – Reigel

+0

@Reigelのバージョンは3.1.1です –

答えて

1

私はそれがWooCommerceが持っているキャッシュのためだと思います。このようなものを試してみてください。

add_action('wp_ajax_update_date_picker', 'update_date_picker'); 

function update_date_picker() { 
    $p_da = $_POST['p_date']; 
    $r_da = $_POST['r_date']; 
    $t_dy = $_POST['t_days']; 
    $order_id = $_POST['order_id']; 

    $order = wc_get_order($order_id); 

    foreach ($order->get_items() as $item_id => $item_obj) { 

     $pd = wc_update_order_item_meta($item_id, 'pickup_hidden_datetime', $p_da); 
     $rd = wc_update_order_item_meta($item_id, 'return_hidden_datetime', $r_da); 
     $td = wc_update_order_item_meta($item_id, 'return_hidden_days', $t_dy); 

     if($pd&&$rd&&$td){ 
      echo "Nice work, Bilal"; 
     } 
    } 
    clean_post_cache($order->get_id()); 
    wc_delete_shop_order_transients($order); 
    wp_cache_delete('order-items-' . $order->get_id(), 'orders'); 
    die(); 
} 
関連する問題