将高级自定义字段规则插入post_meta表

时间:2017-12-24 14:31:26

标签: wordpress advanced-custom-fields

如果帖子标题等于“组件”或“目标网页”,我会将自定义字段插入到postmeta表中。

在我的add_post_meta()函数中,我在序列化数据的开头用双引号加上额外的字符串,最后是带分号的双引号。

预期a:5:{s:5:"param";s:4:"post";s:8:"operator";s:2:"==";s:5:"value";i:3309;s:8:"order_no";i:0;s:8:"group_no";i:1;}

目前正在插入s:110:"a:5:{s:5:"param";s:4:"post";s:8:"operator";s:2:"==";s:5:"value";i:3309;s:8:"order_no";i:0;s:8:"group_no";i:1;}";

这是我的代码:

if ($menupost->post_title == "Components" || $menupost->post_title == "Landing Page") {
                global $wpdb;
                $posttitle = 'Tablet';
                $postid_ofacf = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_title = '" . $posttitle . "' and post_type='acf'");
                $post_meta = get_post_meta($postid_ofacf, "rule", false);
                $post_count = count($post_meta);
                $last_array = $post_meta[$post_count - 1];
                $insert_acf_rule_meta = array();
                foreach ($last_array as $key => $value) {
                    if ($key == "group_no") {
                        $value = $value + 1;
                    }
                    if ($key == "value") {
                        $value = $post_id;
                    }
                    $insert_acf_rule_meta[$key] = $value;
                }
                add_post_meta($postid_ofacf, 'rule', serialize($insert_acf_rule_meta));

                $get_acf_post_args = array(
                    'post_title' => 'Tablet',
                    'post_status' => 'publish',
                    'post_type' => 'acf'
                );
            }
  • 如何按预期插入正确的序列化sting。

  • 就像我将“平板电脑”自定义字段的规则插入到标题为“组件”或“登陆页面”的帖子的postmeta表中,我需要插入更多自定义字段(桌面,移动)规则到postmeta表。 任何帮助都可能非常感谢,提前感谢。

1 个答案:

答案 0 :(得分:1)

没有必要将序列化数组作为参数传递给add_post_meta函数,因为如果给出了数组,它会调用serialize函数,如documentation中所述。

重写一行:

add_post_meta($postid_ofacf, 'rule', serialize($insert_acf_rule_meta));

要:

add_post_meta($postid_ofacf, 'rule', $insert_acf_rule_meta);

希望这有帮助。