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