更新附件元数据失败

时间:2016-06-27 作者:Wimal Weerawansa

使用更新附件标题和说明元数据wp_ajax 中断以前的所有数据和附件结构,我的php代码:

add_action( \'wp_ajax_update_attachment\', \'update_attachment_callback\' );
function update_attachment_callback() {
    $id = isset($_POST[\'id\']) ? $_POST[\'id\'] : FALSE;
    $title = isset($_POST[\'title\']) ? $_POST[\'title\'] : \'TITLE\';
    $description = isset($_POST[\'description\']) ? $_POST[\'description\'] : \'Description\';
    if($id){
        wp_update_attachment_metadata($id, array(
            \'title\' => $title,
            \'description\' => $description
        ));
    }
    echo \'ok\';
    wp_die();
}
和有效载荷:使用JS

data = {
    \'action\': \'update_attachment\',
    \'title\' : title,
    \'id\': id,
    \'description\': description
}; 
一切都很好,但一旦它更新了附件数据,我就会丢失很多附件数据,例如width, height, sizes.thumbnail

我不知道为什么这些数据会丢失,因为我没有更改任何这些数据,我只是更新titledescription 属于附件。

这是在更新附件之前(从js控制台)。before updating

更新后的附件相同。

enter image description here

1 个回复
最合适的回答,由SO网友:Kamaal ABOOTHALIB 整理而成

如果要更新titledescription 您不应该使用wp_update_attachment_metadata 附件标题和描述不是元,它是一个主要的帖子详细信息(附件是自定义帖子),您可以使用以下代码来实现这一点。

$attachment = array(
  \'ID\' => $id,
  \'post_title\' => $title,
  \'post_content\' => $description
);
// now update main post body
wp_update_post( $attachment );

相关推荐

尝试在WordPress中实现AJAX注释,遇到WP错误

我试图在WordPress中为我的评论实现Ajax,使用this tutorial. 但我在将教程中的代码集成到自己的预构建主题时遇到了问题。问题是,我要么得到一个WP错误“检测到重复注释;看来你已经说过了!”或标准500错误。以下是我得到的:下面是我对ajax的评论。js文件如下所示: * Let\'s begin with validation functions */ jQuery.extend(jQuery.fn, { /* * check i