更新而不是用Ajax替换wordpress自定义字段

时间:2018-12-05 17:23:15

标签: php mysql arrays ajax wordpress

我需要更新wordpress中的自定义字段。我在一个带有文本区域的画廊中有几张图像,每个图像都附有注释。现在,我可以在图像的文本区域中写入文本,并且在输入db后,文本将立即用ajax保存。这样可行。但是,将文本添加到另一个文本时,第一个文本会再次消失。如何添加第二条评论而不删除其他评论?

在第一张图片中添加注释时,数据库中的条目看起来像:

  

a:1:{i:8978; s:20:“图片评论1”;}

将评论添加到另一个评论时,整个条目如下所示:

  

a:1:{i:8977; s:19:“图片评论2号”;}

所以它覆盖了第一个

它应该看起来像这样:

  

a:2:{i:8978; s:19:“图片评论1”; i:8977; s:19:“图片评论   no2”;}

那是mySQL数据库 enter 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 :(得分:0)

好吧, 我用这个小代码将新值附加到现有数组中解决了这个问题

$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);
        }