Работа с медиафайлами в WordPress часто требует добавления метаданных, таких как описание, ключевые слова, альтернативный текст и заголовки. Однако по умолчанию WordPress не предоставляет удобного механизма для автоматического заполнения этих данных при загрузке файлов. В этой статье подробно разберем, как создать функционал автозаполнения метаданных при загрузке изображений и других медиафайлов на сайт WordPress с помощью пользовательского плагина.
Почему важно автозаполнение метаданных медиафайлов
Метаданные для изображений и других файлов помогают улучшить SEO сайта, сделать контент более доступным для пользователей с особыми потребностями, а также обеспечить удобство управления медиабиблиотекой. Ручное добавление этих данных занимает много времени, особенно если на сайт загружается большое количество файлов.
Автозаполнение позволяет упростить этот процесс, автоматически добавляя релевантные данные на основе названия файла, его содержимого или других параметров.
Рассмотрим, как реализовать такую функцию с помощью хука add_attachment и сторонних библиотек.
Подключение необходимых инструментов для обработки изображений и метаданных
Для расширенного анализа содержимого файла и генерации метаданных можно использовать библиотеку Intervention Image. Она позволит получить информацию о размере, формате и даже распознавать текст на изображении (с помощью дополнительных модулей), что пригодится для генерации описания.
Для простого плагина достаточно работать с именем файла и использовать стандартные функции WordPress.
Установите Intervention Image через Composer или вручную добавьте в ваш плагин, если планируете использовать расширенный функционал.
Создаем основной плагин для автозаполнения метаданных
Ниже пример простого плагина, который при загрузке медиафайла автоматически заполняет заголовок, альтернативный текст и описание, используя имя файла без расширения.
<?php
/**
* Plugin Name: WPPlugin Автозаполнение метаданных медиа
* Description: Автоматически заполняет title, alt и description для загружаемых файлов.
* Version: 1.0
* Author: WPPlugin.ru
*/
add_action('add_attachment', 'wpplugin_autofill_attachment_metadata');
function wpplugin_autofill_attachment_metadata($attachment_id) {
$attachment = get_post($attachment_id);
if (!$attachment || $attachment->post_type !== 'attachment') {
return;
}
$file_path = get_attached_file($attachment_id);
$file_name = pathinfo($file_path, PATHINFO_FILENAME); // Имя файла без расширения
// Формируем данные
$title = wpplugin_sanitize_title($file_name);
$alt = $title;
$description = 'Изображение или файл с названием ' . $title;
// Обновляем поля
$updated = false;
if (empty($attachment->post_title)) {
wp_update_post(['ID' => $attachment_id, 'post_title' => $title]);
$updated = true;
}
if (!get_post_meta($attachment_id, '_wp_attachment_image_alt', true)) {
update_post_meta($attachment_id, '_wp_attachment_image_alt', $alt);
$updated = true;
}
if (empty($attachment->post_content)) {
wp_update_post(['ID' => $attachment_id, 'post_content' => $description]);
$updated = true;
}
if ($updated) {
clean_post_cache($attachment_id);
}
}
function wpplugin_sanitize_title($string) {
// Убираем дефисы, подчеркивания и приводим к нормальному виду
$string = str_replace(['-', '_'], ' ', $string);
$string = ucwords($string);
return $string;
}
В этом примере мы используем хук add_attachment, который срабатывает сразу после загрузки файла. Функция wpplugin_autofill_attachment_metadata берет имя файла, преобразует его в читабельный заголовок и автоматически устанавливает заголовок, альтернативный текст и описание.
Улучшение автозаполнения метаданных: использование EXIF и других данных
Для изображений можно дополнительно использовать данные EXIF — дату съемки, камеру, геолокацию и прочее. Это поможет делать описание более информативным и полезным.
Пример получения данных EXIF и добавления их в описание:
function wpplugin_fill_metadata_with_exif($attachment_id) {
$file_path = get_attached_file($attachment_id);
if (!function_exists('exif_read_data')) {
return; // EXIF не поддерживается
}
$exif = @exif_read_data($file_path);
if (!$exif) {
return;
}
$description_parts = [];
if (!empty($exif['DateTime'])) {
$description_parts[] = 'Дата съемки: ' . $exif['DateTime'];
}
if (!empty($exif['Model'])) {
$description_parts[] = 'Камера: ' . $exif['Model'];
}
if (!empty($exif['ExposureTime'])) {
$description_parts[] = 'Выдержка: ' . $exif['ExposureTime'];
}
if (!empty($description_parts)) {
$description = implode('; ', $description_parts);
wp_update_post(['ID' => $attachment_id, 'post_content' => $description]);
}
}
add_action('add_attachment', 'wpplugin_fill_metadata_with_exif');
Такой подход позволяет сделать описание более технически насыщенным и полезным для пользователей и поисковых систем.
Практические советы и рекомендации
- Обязательно тестируйте плагин на копии сайта, чтобы не потерять важные данные.
- Можно добавить настройки в админку для управления шаблонами автозаполнения.
- Используйте фильтры WordPress, чтобы дать возможность другим разработчикам изменять поведение автозаполнения.
- Для WooCommerce можно аналогично автозаполнять метаданные у изображений товаров, улучшая SEO магазина.
Примеры плагинов с похожим функционалом
Если не хотите писать плагин самостоятельно, можно рассмотреть готовые решения:
- Automatic Image Alt Text — плагин для генерации ALT из имени файла.
- Clearfy Pro — расширенный набор оптимизаций, в том числе для SEO и метаданных.
Заключение
Автоматизация заполнения метаданных при загрузке файлов значительно экономит время и повышает качество контента. Реализация такого функционала в виде плагина — отличный способ улучшить работу с медиа на вашем сайте. Воспользуйтесь представленными примерами кода и советами для создания надежного и удобного инструмента.