Автоматическое добавление заголовка изображения, надписи, Alt текста, описания при загрузке изображений в WordPress
Может ли кто-нибудь сказать мне, как автоматически заполнять /добавлять одинаковое название изображения в заголовке, заголовке, тексте и описании при загрузке любого изображения в сообщениях WordPress.
3 ответа
added_post_meta
кажется подходящим временем для подключения к новому изображению. Метатет по умолчанию уже не установлен, но функция дает вам $post_id
вместе с $meta_value
, который содержит метаданные вложения. Оттуда вы можете получить все поля и установить те, которые вы хотите.
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);
}
}
Вы можете подключиться к действию add_attachment из строки wp-includes /post.php: 3332. (версия 4.4) Он передается в post_id, и оттуда вы можете получить имя файла, а затем обновить мета-сообщение со всем, что вам нужно.
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 );
}
Для более простого решения вы можете использовать этот плагин WordPress, который я сделал некоторое время назад.
Плагин поставляется с массовым программным обеспечением, которое обновит атрибуты изображения для изображений уже в медиатеке, если вы хотите это сделать.