Intereting Posts
Изменение постоянных ссылок для определенных страниц git и local wordpress: как обрабатывать обновления WordPress? Пользовательский логотип не отображается после обновления wordpress 4.5 Удалить роль суперадмина из меню «изменить роль в» в списке пользователей Вывод URL-адресов канонического ресурса в многосетевой сети? Как изменить язык плагина только на одной странице? Есть ли простой способ иметь новую боковую панель для каждой страницы? Могу ли я подключиться к кнопке «Вставить / Редактировать» в TinyMCE, чтобы использовать Shortlink For Post? Добавление настроек отображения вложений в пользовательском медиа рамке Цель добавления способности к роли, но не предоставления? Крюк при добавлении или редактировании определенного пользовательского типа сообщений? Добавить переменную для URL или установить сеанс Случайные буквенно-цифровые URL-адреса Query All Posts: Либо дисплей самого последнего, либо один с особым значением ACF, выбранным Ошибки при загрузке изображений в WP 3.5

Как обновить одно значение в многомерной почтовой мета?

В Post Meta Data хранятся некоторые значения, хранящиеся в виде многомерного массива. Я хочу обновить некоторые данные.

Здесь отображается значение Meta Post с использованием <?php the_meta(); ?> <?php the_meta(); ?>

 voter: a:1:{s:5:"voter";a:5: {s:7:"post_id";s:6:"219585";s:8:"voter_id";s:4:"1540";s:8:"voter_ip";s:13:"182.4 8.238.86";s:9:"author_id";s:4:"1540";s:4:"vote";s:1:"1";}}, a:1:{s:5:"voter";a:5: {s:7:"post_id";s:6:"219585";s:8:"voter_id";s:3:"832";s:8:"voter_ip";s:13:"182.48 .238.86";s:9:"author_id";s:4:"1540";s:4:"vote";s:2:"-1";}}, a:1:{s:5:"voter";a:5: {s:7:"post_id";s:6:"219585";s:8:"voter_id";s:2:"10";s:8:"voter_ip";s:13:"182.48. 238.86";s:9:"author_id";s:4:"1540";s:4:"vote";s:1:"1";}} 

Теперь я хочу обновить vote или voter_ip где user_id – 832 или 1540. Я пробовал использовать update_post_meta() но все это обновлял.

Итак, как обновить мета-запись одного значения, хранящегося в многомерном массиве?

Обновить:

массив с использованием the-meta()

 voter: a:1:{s:5:"voter";a:5:{s:7:"post_id";s:6:"219585";s:8:"voter_id";s:3:"832";s:8:"voter_ip";s:13:"182.48.238.86";s:9:"author_id";s:4:"1540";s:4:"vote";s:1:"1";}}, a:1:{s:5:"voter";a:5:{s:7:"post_id";s:6:"219585";s:8:"voter_id";s:4:"1540";s:8:"voter_ip";s:13:"182.48.238.86";s:9:"author_id";s:4:"1540";s:4:"vote";s:2:"-1";}}, , , a:1:{s:5:"voter";a:5:{s:7:"post_id";s:6:"219585";s:8:"voter_id";s:3:"832";s:8:"voter_ip";s:13:"182.48.238.86";s:9:"author_id";s:4:"1540";s:4:"vote";s:1:"1";}}, a:1:{s:5:"voter";a:5:{s:7:"post_id";s:6:"219585";s:8:"voter_id";s:4:"1540";s:8:"voter_ip";s:13:"182.48.238.86";s:9:"author_id";s:4:"1540";s:4:"vote";s:2:"-1";}} 

массив с использованием print_r()

 Array( [0] => Array ( [voter] => Array ( [post_id] => 219585 [voter_id] => 832 [voter_ip] => 182.48.238.86 [author_id] => 1540 [vote] => 1 ) ) [1] => Array ( [voter] => Array ( [post_id] => 219585 [voter_id] => 1540 [voter_ip] => 182.48.238.86 [author_id] => 1540 [vote] => -1 ) ) [2] => [3] => [4] => Array ( [voter] => Array ( [post_id] => 219585 [voter_id] => 832 [voter_ip] => 182.48.238.86 [author_id] => 1540 [vote] => 1 ) ) [5] => Array ( [voter] => Array ( [post_id] => 219585 [voter_id] => 1540 [voter_ip] => 182.48.238.86 [author_id] => 1540 [vote] => -1 ) )) 

Возможно, вам понадобится неэтериализовать данные, чтобы получить массив и пропустить его таким образом:

 $userid = 832; // or 1540 $votes = get_post_meta($postid,'voter'); $votes = maybe_unserialize($votes); if (is_array($votes)) { // votes is the array, key is numeric index, vote is subarray foreach ($votes as $key => $vote) { // subarray values are in another array with key 'voter' if ($vote['voter']['voter_id'] == $userid) { $votes[$key]['voter']['vote'] = $newvote; $votes[$key]['voter']['voter_ip'] = $newvoterip; } } update_post_meta($postid,'voter',$voter); }