我正在使用一个简单的自定义插件,该插件将外部XML数据解析并保存为自定义字段中的序列化数组。这很好,但是,当我更新帖子时,我看到的不是数组,而是一条消息:“bool(false)”。我想它必须进行序列化/取消序列化,但没有找到任何线索。
我需要使用update_post_meta($post_id, \'tb_data\', serialize($new_value_array));
通过省略类似序列化update_post_meta($post_id, \'tb_data\', $new_value_array);
不在自定义字段中存储任何数据。此外,我必须使用maybe_unserialize(get_post_meta($post->ID, \'tb_data\', true));
打印结果。
共有2个自定义字段,(1)tb\\U item\\U group\\U id和(2)tb\\U data。tb\\U数据的值将使用以下功能添加,
我用来更新帖子元的函数如下。
function parse_file_func($title) {
// get_tickets_array();exit;
$language = explode(\'-\', get_bloginfo(\'language\'));
$language = $language[0];
$file = file_get_contents(\'https://dl.dropboxusercontent.com/u/12344450/feed.xml\');
if (!$file) {
exit;
}
$domObj = new xmlToArrayParser($file);
$domArr = $domObj->array;
if (($domObj->parse_error)) {
echo $domObj->get_xml_error();
} else {
$first = $domArr[\'rss\'][\'channel\'][\'item\'];
foreach ($first as $item) {
if ($item[\'languageCode\'] == $language) {
$args = array(
\'meta_key\' => \'tb_item_group_id\',
\'meta_value\' => $item[\'g:item_group_id\'],
\'post_type\' => \'tickets\',
);
$post = get_posts($args);
if (empty($post)) {
continue;
} else {
$args = array(
\'meta_key\' => \'tb_item_group_id\',
\'meta_value\' => $item[\'g:item_group_id\'],
\'post_type\' => \'tickets\',
);
$post = get_posts($args);
$post_id = $post[0]->ID;
$meta_values = get_post_meta($post_id, \'tb_data\');
if (empty($meta_values)) {
$new_value_array = array();
unset($item[\'cdata\']);
$new_value_array[\'tb_\' . $item[\'g:item_group_id\'] . \'_\' . $item[\'ticketID\']] = $item;
}
else {
$meta_arrays = unserialize($meta_values[0]);
$new_value_array = $meta_arrays;
foreach ($meta_arrays as $meta_ticketbar => $tb_content) {
if ($meta_ticketbar == \'tb_\' . $item[\'g:item_group_id\'] . \'_\' . $item[\'ticketID\']) {
unset($item[\'cdata\']);
$new_value_array[$meta_ticketbar] = $item;
} else {
$new_value_array = $meta_arrays;
unset($item[\'cdata\']);
$new_value_array[\'tb_\' . $item[\'g:item_group_id\'] . \'_\' . $item[\'ticketID\']] = $item;
}
}
}
update_post_meta($post_id, \'tb_data\', serialize($new_value_array));
// update_post_meta($post_id, \'tb_data\', base64_encode($new_value_array));
}
} else {
continue;
}
}
}
}
并使用在前端显示
get_post_meta
<?php
// $tb_meta = get_post_meta($post->ID, \'tb_data\', true);
$tb_meta = get_post_meta($post->ID, \'tb_data\', true);
$tb_meta_unserialized = maybe_unserialize( $tb_meta );
?>
<pre><?php
// print_r ($tb_meta_unserialized);
var_dump($tb_meta_unserialized);
?></pre>