La mise à jour des métadonnées de titre et de description de pièce jointe avec wp_ajax
détruit toutes les données précédentes et la structure de la pièce jointe, mon code 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();
}
Et charge utile: avec JS
data = {
'action': 'update_attachment',
'title' : title,
'id': id,
'description': description
};
Tout va bien, mais, une fois les données de pièces jointes mises à jour, je perds beaucoup de données de pièces jointes telles que width
, height
, sizes.thumbnail
etc ...
Je ne sais pas pourquoi ces données sont en train de perdre, parce que je ne change aucune de ces données, je ne fais que mettre à jour title
et description
d'attachement.
Ceci est avant la mise à jour de la pièce jointe (à partir de la console js).
Même pièce jointe juste après la mise à jour.
Si vous souhaitez mettre à jour title
et description
, vous ne devez pas utiliser le titre et la description de la pièce jointe wp_update_attachment_metadata
; ce n'est pas une méta, c'est un détail de publication principale (la pièce jointe est une publication personnalisée).
$attachment = array(
'ID' => $id,
'post_title' => $title,
'post_content' => $description
);
// now update main post body
wp_update_post( $attachment );