如何检索自定义字段值并再次保存为数组

时间:2015-08-17 作者:NewWPdeveloper

我是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个页面,我应该如何优化它。

非常感谢您的帮助。

2 个回复
最合适的回答,由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

SO网友:Domain

您应该使用get\\u post\\u meta($post\\u id,“\\u custField1”,true);

将$single参数设为true,使其返回单个值。

结束

相关推荐

Display taxonomy posts

这似乎非常基本,但在任何地方都找不到明确的答案。我所要寻找的就是在分类法中显示帖子的循环。假设我有一个名为custom_category 在这其中,我有几个类别,比如美国和加拿大,然后爱达荷州和华盛顿是我们的孩子。所以url看起来像http://example.com/custom_category/us/idaho/. 我所要做的就是将正确的PHP添加到taxonomy.php 页面显示每个类别中的帖子。因此,只有当你在爱达荷州的网页上时,你才能看到贴在上面的帖子,而当你在华盛顿的网页上时,你才能看到贴