web-dev-qa-db-ja.com

添付ファイルのメタデータの更新に失敗する

添付ファイルのタイトルと説明のメタデータを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
}; 

すべて問題ありませんが、アタッチメントデータを更新すると、widthheightsizes.thumbnailなどの添付データが大量に失われます。

私はこれらのデータのどれも変更していないので、私はこのデータが失っている理由はわかりません、私は付属のtitledescriptionを更新するだけです。

これは添付ファイルの更新前(js consoleから)です。 before updating

更新直後の同じ添付ファイル。

enter image description here

1

titleおよびdescriptionを更新したい場合は、wp_update_attachment_metadata添付ファイルのタイトルを使用しないでください。descriptionはメタではありません。メインの投稿の詳細です(添付ファイルはカスタム投稿です)。次のコードでこれを実行できます。

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