web-dev-qa-db-fra.com

La mise à jour des métadonnées de pièce jointe échoue

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). before updating

Même pièce jointe juste après la mise à jour.

enter image description here

1
Wimal Weerawansa

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 );
0
Kamaal ABOOTHALIB