Php 如何从任何地方更新订单项元数据?

Php 如何从任何地方更新订单项元数据?,php,ajax,wordpress,woocommerce,Php,Ajax,Wordpress,Woocommerce,我正在开发一个自行车租赁网站,用户可以在其中选择从开始日期到结束的日期范围(以天为单位)。我使用wc\u add\u order\u item\u meta()函数将这些数据存储为订单的元数据,对吗 然后,我想给用户一个功能,比如他可以通过查看订单页面来改变或延长天数。这也完成了,我创建了一个模式,并在模式上添加了一个关于更改日期的ajax请求 现在,我使用AJAX将数据发送到functions.php,并使用wc\u update\u order\u item\u meta()更新元数据 我的

我正在开发一个自行车租赁网站,用户可以在其中选择从开始日期到结束的日期范围(以天为单位)。我使用
wc\u add\u order\u item\u meta()
函数将这些数据存储为订单的元数据,对吗

然后,我想给用户一个功能,比如他可以通过查看订单页面来改变或延长天数。这也完成了,我创建了一个模式,并在模式上添加了一个关于更改日期的ajax请求

现在,我使用AJAX将数据发送到
functions.php
,并使用
wc\u update\u order\u item\u 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();
    }

}
这也在更新,但并非所有地方都在更新。我的意思是,它给了我正确的响应,当我刷新时,它也给了更新的数据,但当我浏览查看项目页面时,它只在那里显示旧数据,而不是更新的数据。即使我在管理中检查订单,它也会在那里显示旧的元数据


任何想法都将不胜感激,提前感谢。

我想这是因为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();
}

您的woocommerce版本是什么?@Reigel版本是3.1.1