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

时间:2015-09-16 11:08:49

标签: php 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'  );

但我似乎无法弄清楚这个功能是如何运作的。

我非常感谢你提前帮助

1 个答案:

答案 0 :(得分:1)

根据您的更新我创建的simple function执行update_post_meta,根据我的知识,我没有看到使用您的函数更新值的任何选项,如update_post_meta( $_product->id, 'more_info_data', 'f', '100' );

你可以根据自己的意愿在函数update_custom_post_meta_data中创建条件,我不确定是不是确切地知道将条件分成哪个数据是普通的,因此它取决于你。

所以我创建了像

这样的替代功能
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'  );

它将适合您的要求。

感谢。