외부 XML 데이터를 구문 분석하여 사용자 정의 필드에 직렬화 된 배열로 저장하는 간단한 사용자 정의 플러그인을 사용하고 있습니다. 그러나 게시물을 업데이트 할 때 어레이 대신 단지 "bool (false)"메시지 만 보입니다. 나는 그것이 serialize/unserialize와 함께하지만 모든 단서를 찾지 못했다고 생각합니다.get_post_meta 문제 직렬화 해제 - 부울 반환 (false)
update_post_meta($post_id, 'tb_data', $new_value_array);
과 같은 serialize를 생략하면 사용자 지정 필드에 데이터가 저장되지 않으므로 게시물 메타를 업데이트 할 때 serialize해야합니다. update_post_meta($post_id, 'tb_data', serialize($new_value_array));
또한 결과를 인쇄하려면 maybe_unserialize(get_post_meta($post->ID, 'tb_data', true));
을 사용해야합니다.
사용자 정의 필드에는 (1) tb_item_group_id 및 (2) tb_data가 있습니다. tb_data의 값은 아래의 함수를 사용하여 더해질 것입니다.
기능 게시 메타를 업데이트하는 기능은 아래와 같습니다.
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>