如何在 wordpress/woocommerce 中更新 post 自定义值

How to update a post custom value in wordpress/woocommerce

当用户完成订单时,我必须在 woocommerce 购物车中更新自定义字段

以下函数:

$moreinfo_values = get_post_meta($_product->id,'more_info_data');

获取数组:

    Array
    (
        [0] => Array
            (
                [0] => Array
                    (
                        [m] => NSW
                        [o] => Sydney
                        [d] => Something
                        [p] => Array
                            (
                                [0] => 13/08/2015
                                [1] => 14/08/2015
                            )

                        [n] => 9am - 4pm
                        [f] => 20
                    )

                [1] => Array
                    (
                        [m] => SA
                        [o] => Adelaide
                        [d] => Hotel SA 5000
                        [p] => Array
                            (
                                [0] => 02/04/2015
                            )

                        [n] => 9am - 4pm
                        [f] => 12
                    )


            )

    )

我需要使用以下函数更新 [f] => 12

update_post_meta( $_product->id, 'more_info_data', 'f', '100'  );

但是我好像不太明白这个函数是怎么工作的。

非常感谢您提前提供的帮助

根据你的更新,我创建了 simple function,它正在做 update_post_meta,据我所知,我没有看到任何选项可以使用你的函数更新值,比如 update_post_meta( $_product->id, 'more_info_data', 'f', '100' );

您可以根据自己的意愿在函数 update_custom_post_meta_data 中创建条件,我不确定不知道将条件拆分为 common 的确切数据,因此这取决于您。

所以我创建了替代函数

function update_custom_post_meta_data($id, $meta_name, $array_key, $array_value) {
    // Get the data from meta name
    $get_meta_data = get_post_meta($id, $meta_name, true);
    $new_array = array();
    foreach ($get_meta_data as $key => $values) {
        if (isset($values[$array_key])) {
            $values[$array_key] = $array_value;
        }
        $new_array[$key] = $values;
    }
    update_post_meta($id, $meta_name, $new_array);
}

您可以通过将现有函数名称替换为这个函数名称来使用此函数

update_custom_post_meta_data( $_product->id, 'more_info_data', 'f', '100'  );

它将满足您的要求。

谢谢。