Kann mir jemand sagen, wie ich den gleichen Bildtitel in Titel, Beschriftung, Alternativtext und Beschreibung automatisch ausfülle / hinzufüge, während ich ein Bild in meine WordPress-Beiträge hochlade?
Kann mir jemand sagen, wie ich den gleichen Bildtitel in Titel, Beschriftung, Alternativtext und Beschreibung automatisch ausfülle / hinzufüge, während ich ein Bild in meine WordPress-Beiträge hochlade?
Antworten:
Sie können die Aktion 'add_attachment' über wp-includes / post.php einbinden. Zeile: 3332. (Version 4.4) Es wird die post_id übergeben und von dort aus können Sie den Dateinamen abrufen und dann das Post-Meta mit allem aktualisieren, was Sie benötigen.
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
scheint ein guter Zeitpunkt zu sein, um sich in ein neues Image einzuklinken. Nicht nur ist der Standard - Meta bereits festgelegt , aber die Funktion gibt Ihnen die $post_id
zusammen mit $meta_value
dem hält die Anlage Metadaten. Von dort aus können Sie alle Felder abrufen und die gewünschten festlegen.
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);
}
}
Für eine einfachere Lösung können Sie dieses WordPress-Plugin verwenden, das ich vor einiger Zeit erstellt habe.
Das Plugin enthält auch einen Bulk-Updater, der die Bildattribute für Bilder aktualisiert, die sich bereits in Ihrer Medienbibliothek befinden, wenn Sie dies ebenfalls tun möchten.