Обновление и не замена пользовательских полей WordPress на AJAX - PullRequest
0 голосов
/ 05 декабря 2018

Мне нужно обновить настраиваемое поле в WordPress.У меня есть несколько изображений в галерее с текстовой областью для комментариев, прикрепленных к каждому изображению.Теперь я могу писать текст в текстовой области изображения, и текст сохраняется с помощью ajax сразу после ввода в базу данных.Это работает.Однако при добавлении текста к другому первый текст снова исчезает.Как я могу добавить второй комментарий, не удаляя остальные?

Записи в БД выглядят так, как при добавлении комментария к первой картинке:

a: 1: {i:8978; с: 20: «Комментарий к изображению № 1»;}

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

a: 1:{i: 8977; s: 19: "Комментарий к изображению №2";}

Таким образом, он перезаписывает первый

Он должен выглядеть следующим образом:

a: 2: {i: 8978; s: 19: «Комментарий к изображению №1»; i: 8977; s: 19: «Комментарий к изображению №2»;}

Это база данных MySQLenter image description here

И мой код:

if(isset($_POST['method']) && $_POST['method'] == 'comment')
{
    //Get current commentd images
    $current_images_comment = get_post_meta('9550', 'gallery_images_comment', true);

    if(!empty($current_images_comment))
    {
        if ( !in_array( $image_id, $current_images_comment ) ) {
            $current_images_comment[] = $image_id;
        }

       $current_images_comment = array_unique($current_images_comment);

       $poddata = Array( $image_id =>$comm_text );
       update_post_meta('9550', 'gallery_images_comment', $poddata);


    }

}

comm_text содержит текст из textarea

if(isset($_POST['comm_text']))
{
    $comm_text = $_POST['comm_text'];
}

1 Ответ

0 голосов
/ 06 декабря 2018

Хорошо, я решил вопрос с помощью этого небольшого кода, добавив новые значения в существующий массив

$poddata = $current_images_comment;
$poddata[$image_id] = $comm_text;

Возможно, это будет полезно и для кого-то еще

if(isset($_POST['method']) && $_POST['method'] == 'comment')
        {
            //Get current commentd images
            $current_images_comment = get_post_meta($gallery_id, 'gallery_images_comment', true);

            if(!empty($current_images_comment))
            {

      $poddata = $current_images_comment;
      $poddata[$image_id] = $comm_text;
            } else {
/*if no entry in db*/
  $poddata = Array(
      $image_id =>$comm_text
      );

}

  update_post_meta($gallery_id, 'gallery_images_comment', $poddata);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...