我是PHP和WordPress的新手
我有这个场景
页面中保存了4个自定义字段,名称为:
\\u custField1
\\u custField2
\\u custField3
\\u custField4
我现在需要做的是获取它们的值并将它们保存在一个数组中,然后将该数组作为自定义字段保存回页面。
我试着跟着。
$page_list = get_pages();
foreach($page_list as $page) {
$post_id = $page->ID;
$custField1= get_post_meta( $post_id, \'_custField1\' );
$custField2= get_post_meta( $post_id, \'_custField2\' );
$custField3= get_post_meta( $post_id, \'_custField3\' );
$custField4= get_post_meta( $post_id, \'_custField4\' );
$custArray[] = array(
\'_custField1\'=>$custField1,
\'_custField2\'=>$custField2,
\'_custField3\'=>$custField3,
\'_custField4\'=>$custField4
);
add_post_meta ( $post_id, \'_newcust\',maybe_serialize($custArray), true );
}
endforeach;
wp_reset_postdata();
它确实另存为数组,但每个自定义字段本身都另存为数组。虽然我现在想以\\u newcust[\'\\u custField1\']的身份获得结果,但我不能。
我做错了什么?
PS:还有一件事,上面的代码会导致网站崩溃,如果有超过50个页面,我应该如何优化它。
非常感谢您的帮助。
最合适的回答,由SO网友:Mike 整理而成
这就是我要做的。。。
$page_list = get_pages();
foreach($page_list as $page) {
$post_id = $page->ID;
$custArray = array(
\'_custField1\' => get_post_meta( $post_id, \'_custField1\', true ),
\'_custField2\' => get_post_meta( $post_id, \'_custField2\', true ),
\'_custField3\' => get_post_meta( $post_id, \'_custField3\', true ),
\'_custField4\' => get_post_meta( $post_id, \'_custField4\', true )
);
add_post_meta ( $post_id, \'_newcust\', $custArray, true );
}
如果该值是数组,则WordPress将对其进行序列化-请参阅
https://codex.wordpress.org/Function_Reference/add_post_meta