Quelqu'un peut-il me dire comment remplir/ajouter automatiquement le même titre d'image dans le titre, la légende, le texte de remplacement et la description lors du téléchargement d'une image dans mes publications WordPress.
Vous pouvez vous connecter à l'action 'add_attachment' à partir de la ligne wp-includes/post.php: 3332. (Version 4.4) Il passe dans le post_id et à partir de là, vous pouvez obtenir le nom du fichier, puis mettre à jour le méta de post avec tout ce dont vous avez besoin.
add_action( 'add_attachment', 'wpse_125805_add_image_meta_data' );
function wpse_125805_add_image_meta_data( $attachment_ID ) {
$filename = $_REQUEST['name']; // or get_post by ID
$withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $filename);
$withoutExt = str_replace(array('-','_'), ' ', $withoutExt);
$my_post = array(
'ID' => $attachment_ID,
'post_excerpt' => $withoutExt, // caption
'post_content' => $withoutExt, // description
);
wp_update_post( $my_post );
// update alt text for post
update_post_meta($attachment_ID, '_wp_attachment_image_alt', $withoutExt );
}
added_post_meta
semble être un bon moment pour accrocher une nouvelle image. Non seulement la méta par défaut est déjà définie, mais la fonction vous donne le $post_id
avec $meta_value
qui contient les métadonnées de la pièce jointe. De là, vous pouvez obtenir tous les champs et définir ceux que vous souhaitez.
add_action('added_post_meta', 'wpse_20151219_after_post_meta', 10, 4);
function wpse_20151219_after_post_meta($meta_id, $post_id, $meta_key, $meta_value) {
// _wp_attachment_metadata added
if($meta_key === '_wp_attachment_metadata') {
// ----------------------------------------------------------------------
// POST
// ----------------------------------------------------------------------
// Change basic fields on attachment post
wp_update_post(array(
'ID' => $post_id,
'post_title' => "This is a TITLE for $post_id",
'post_content' => "This is the DESCRIPTION for $post_id",
'post_excerpt' => "This is the CAPTION for $post_id",
));
// ----------------------------------------------------------------------
// POST META
// ----------------------------------------------------------------------
// Change ALT Text
update_post_meta($post_id, '_wp_attachment_image_alt', "This is the ALT Text for $post_id");
// Add Custom Field
update_post_meta($post_id, '_wpse_20121219_my_custom_meta', 'MyCustomMetaValue');
// ----------------------------------------------------------------------
// POST META ( ATTACHMENT METADATA )
// ----------------------------------------------------------------------
// Change Image Metadata
$meta_value[ 'image_meta' ] = array_merge($meta_value[ 'image_meta' ], array(
'credit' => 'https://black-buddha.com',
'camera' => 'The Best Camera EVER!',
'copyright' => date('Y'),
'title' => "This is a META TITLE for $post_id",
'caption' => "This is a META CAPTION for $post_id",
));
// Update The Image Metadata
wp_update_attachment_metadata($post_id, $meta_value);
// _wp_attached_file
// _wp_attachment_metadata (serialized)
// _wp_attachment_image_alt
// _wpse_20121219_my_custom_meta
$attachment_meta = get_post_meta($post_id);
// width
// height
// file
// sizes
// image_meta
// aperture
// credit
// camera
// caption
// created_timestamp
// copyright
// focal_length
// iso
// shutter_speed
// title
// orientation
// title
// keywords
$attachment_metadata = wp_get_attachment_metadata($post_id);
}
}
Pour une solution plus simple, vous pouvez utiliser le plugin this WordPress que j'ai créé il y a quelque temps.
Le plugin est livré avec un programme de mise à jour en masse qui mettra également à jour les attributs des images déjà présentes dans votre médiathèque, si vous le souhaitez.