web-dev-qa-db-fra.com

Vous modifiez le conflit légende/description de média dans Wordpress?

Lors du téléchargement d'une image, Wordpress lit les métadonnées de la description à partir du jpg via wp_read_image_metadata et les insère dans le champ post_content lors de l'ajout de la pièce jointe via media_handle_upload ou media_handle_sideload

Mais lors de l'ajout d'une image à l'éditeur dans Wordpress, il cherche la légende dans le champ post_excerpt via image_media_send_to_editor

Ce que j'aimerais, c'est juste une certaine continuité, dans le sens où, lorsque nos images sont téléchargées, le champ renseigné par WordPress pour la méta-description des images est celui utilisé pour la légende lors du placement d'une image dans l'éditeur.

Quelqu'un peut-il suggérer un moyen de relier n'importe laquelle de ces fonctions afin de faire correspondre le processus? Je ne me soucie pas vraiment de la façon dont je résous le problème, même si j'ai tendance à penser que post_excerpt entraîne moins de surcharge de la base de données puisqu'il s'agit d'un champ "plus petit".

Toute aide est grandement appréciée.

Merci.

3
edeneye

Je me demande si cela fonctionnera pour vous:

add_action( 'add_attachment', function( $attachment_id ){
    $a = get_post( $attachment_id );
    if ( is_object( $a ) && 'image' === substr( $a->post_mime_type, 0, 5 ) )
        wp_insert_attachment( array( 'ID' => $a->ID, 'post_excerpt' => $a->post_content ) );

});

ou avec moins de requêtes:

add_action( 'add_attachment', function( $attachment_id ){
    global $wpdb;
    if( ! empty( $attachment_id ) )
        $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts 
                                       SET post_excerpt = post_content 
                                       WHERE ID = %d LIMIT 1", $attachment_id ) );

});

où la description (post_content) est copiée dans la légende (post_excerpt) lorsque le add_attachment est déclenché juste après que la pièce jointe a été insérée (ajoutée).

1
birgire