У меня есть код в моем Wordpress:
$wiadomosci = get_user_meta($user->ID,'wiadomosci', false);
if($wiadomosci) {
array_push($wiadomosci[$topic], $post->ID);
update_user_meta($user->ID, 'wiadomosci', $wiadomosci);
} else {
$wiadomosci = array($topic => array($post->ID));
add_user_meta($user->ID, 'wiadomosci', $wiadomosci);
}
Когда переменная $ wiadomosci не существует, я создаю массив. $ topic - это идентификатор cateogory. Поэтому я получаю следующее:
Array
(
[0] => Array
(
[8] => Array
(
[0] => 139
)
)
)
8 - это идентификатор категории и 139 post ID. Теперь, когда переменная $ topic равна 8, я хочу добавить идентификатор сообщения (например, 140) и получить следующее:
Array
(
[0] => Array
(
[8] => Array
(
[0] => 139
[1] => 140
)
)
)
Но я получаю это:
Array
(
[0] => Array
(
[0] => Array
(
[8] => Array
(
[0] => 139
)
)
[8] =>
)
)
Я попробовал заменить
array_push($wiadomosci[$topic], $post->ID);
с:
$wiadomosci[$topic] = $post->ID
Но это не работает. Есть идеи?
Хорошо, я решил это. Здесь код:
$wiadomosci = get_user_meta($user->ID,'wiadomosci', false);
if($wiadomosci) {
$tmp = $wiadomosci[0][$topic];
$tmp[] = $post->ID;
$wiadomosci[0][$topic] = $tmp;
update_user_meta($user->ID, 'wiadomosci', $wiadomosci[0]);
} else {
$wiadomosci = array($topic => array($post->ID));
add_user_meta($user->ID, 'wiadomosci', $wiadomosci);
}
Проблема в том, что wp_get_post_meta(..., false )
возвращает массив - false
означает, что meta несколько. Измените последний аргумент на true
и вы должны быть установлены.
если вы сделаете это в своем другом?
$wiadomosci = array($topic => $post->ID);