J'essaie de faire en sorte que WordPress enregistre automatiquement les métadonnées de "crédit" stockées dans les images que je télécharge. Je sais que cela serait entré comme un champ méta de post personnalisé à l’aide de update_post_meta()
.
Les informations de "crédit" sont collectées par wp_read_image_metadata()
, mais media_handle_upload()
ne l'utilise pas. Il utilise uniquement les informations de "légende" et "titre" recueillies à partir de l'image pour post_content
et post_title
respectivement.
J'ai trouvé plusieurs exemples sur la manière d'ajouter des champs de métadonnées de pièce jointe personnalisés after lors du téléchargement lors de la modification de l'image, mais puisque WP recueille déjà ces informations à partir des métadonnées de l'image, souhaite trouver un moyen de l’enregistrer au fur et à mesure que l’image est téléchargée.
Je ne sais pas quelles étapes prendre pour accrocher media_handle_upload()
(il ne semble pas y avoir de crochet) pour pouvoir appeler update_post_meta
afin de sauvegarder la ligne "crédit" de la pièce jointe.
Vous pouvez utiliser wp_generate_attachment_metadata
:
Cette fonction génère des métadonnées pour une image jointe. Il crée également une miniature et d’autres tailles intermédiaires de la pièce jointe en fonction des tailles définies dans Settings_Media_Screen.
Le deuxième argument du filtre est l'identifiant de la pièce jointe, il ne devrait donc pas y avoir de problème pour ajouter la méta de post:
add_filter( 'wp_generate_attachment_metadata', 'manipulate_metadata_wpse_91177', 10, 2 );
function manipulate_metadata_wpse_91177( $metadata, $attachment_id )
{
// var_dump( $metadata['image_meta'] );
// Credit is inside $metadata['image_meta']['credit']
return $metadata;
}
En inspectant le contenu de $metadata['image_meta']
avec FirePHP, voici les résultats:
aperture: 4
camera: "DMC-FZ100"
caption: ""
copyright: ""
created_timestamp: 1352136868
credit: ""
focal_length: "9.2"
iso: "100"
shutter_speed: "0.003125"
title: "Double Dip"
[Mise à jour]
Test complet lors de l’ajout d’une colonne personnalisée dans l’écran de la bibliothèque multimédia (/wp-admin/upload.php
) afin d’afficher les métadonnées de la publication:
add_filter( 'wp_generate_attachment_metadata', 'manipulate_metadata_wpse_91177', 10, 2 );
add_filter( 'manage_upload_columns', 'camera_info_column_wpse_91177' );
add_action( 'manage_media_custom_column', 'camera_info_display_wpse_91177', 10, 2 );
function manipulate_metadata_wpse_91177( $metadata, $attachment_id )
{
update_post_meta( $attachment_id, 'photo_title', $metadata['image_meta']['title'] );
update_post_meta( $attachment_id, 'photo_camera', $metadata['image_meta']['camera'] );
return $metadata;
}
function camera_info_column_wpse_91177( $columns )
{
$columns['cam_info'] = 'Camera Info';
return $columns;
}
function camera_info_display_wpse_91177( $column_name, $post_id )
{
if( 'cam_info' != $column_name || !wp_attachment_is_image( $post_id ) )
return;
$title = get_post_meta( $post_id, 'photo_title', true );
$camera = get_post_meta( $post_id, 'photo_camera', true );
$echo_title = $title ? 'Title: ' . $title . '<br />' : '';
$echo_camera = $camera ? 'Camera: ' . $camera : '';
echo $echo_title . $echo_camera;
}
Questions/Réponses: Créer une nouvelle catégorie lors de l’enregistrement sur la base des informations postales