我得到了一个O/p:
s: 287:";a: 3:{s:6:"演员";a:2:{s:4:"名字";s:6:"角色";s:5:"价值";s:38:"费利西蒂·琼斯、迭戈·卢纳、艾伦·图迪克";"导演";;a: 2:{s:4:"名称";s:8:"导演";s:5:"值";s:14:"Gareth Edwards";}s:6:";"作家";;a: 2:{s:4:"名称";s:6:"作家";s:5:"价值";s:36:"克里斯·韦茨、托尼·吉尔罗伊、约翰·诺尔";}";;
我的代码:-
<?php
$arr = array("actors"=>array("name"=>"Actors","value"=>"Curt Clendenin, Michael Ornelas, Keaton Shyler, David Uchansky"),"director"=>array("name"=>"Director","value"=>"Colin Fleming, John Garside"),"writer"=>array("name"=>"Writer","value"=>"Colin Fleming (story), John Garside (story), Jerry Renek (story)"));
$sarr = serialize($arr);
add_post_meta(1,'_attributes',$sarr);
?>
我不需要第一个s:287";但这个东西会自动保存在我的数据库中。请帮帮我。。
$arr = [
'actors' => [
'name' => 'Actors',
'value' => 'Curt Clendenin, Michael Ornelas, Keaton Shyler, David Uchansky',
],
'director' => [
'name' => 'Director',
'value' => 'Colin Fleming, John Garside',
],
'writer' => [
'name' => 'Writer',
'value' => 'Colin Fleming (story), John Garside (story), Jerry Renek (story)',
],
];
// just store it as it is - wordpress does the rest
add_post_meta(1, '_attributes', $sarr);
正如您在add_post_meta()
的文档中看到的,它在内部调用add_metadata((函数。此函数检查数据,这些数据必须通过调用maybe_serialize((进行序列化。由于BC的原因,它会对函数注释中提到的已经序列化的字符串进行双重序列化。
结论:只需将未序列化的数组传递给add_post_meta()
函数即可。