Вот полный код плагина для WordPress, который автоматически прописывает alt и title при загрузке изображений:
<?php
/*
Plugin Name: Auto Image Alt and Title
Plugin URI: http://yoursite.com
Description: Автоматическая генерация alt и title для загружаемых изображений
Version: 1.0
Author: Your Name
Author URI: http://yoursite.com
*/
class AutoImageMetaPlugin {
public function __construct() {
// Хуки для обработки загрузки изображений
add_filter('wp_generate_attachment_metadata', [$this, 'auto_set_image_meta'], 10, 2);
add_action('add_attachment', [$this, 'set_image_meta_on_upload'], 10, 1);
}
// Генерация метаданных при загрузке
public function set_image_meta_on_upload($post_id) {
// Проверяем, что это изображение
if (wp_attachment_is_image($post_id)) {
$image_meta = $this->generate_image_meta($post_id);
// Обновляем метаданные
update_post_meta($post_id, '_wp_attachment_image_alt', $image_meta['alt']);
// Обновляем заголовок вложения
wp_update_post([
'ID' => $post_id,
'post_title' => $image_meta['title']
]);
}
}
// Генерация метаданных при создании миниатюр
public function auto_set_image_meta($metadata, $attachment_id) {
if (wp_attachment_is_image($attachment_id)) {
$image_meta = $this->generate_image_meta($attachment_id);
// Обновляем метаданные изображения
if (!isset($metadata['image_meta'])) {
$metadata['image_meta'] = [];
}
$metadata['image_meta']['title'] = $image_meta['title'];
return $metadata;
}
return $metadata;
}
// Генерация метаданных для изображения
private function generate_image_meta($attachment_id) {
// Получаем информацию о файле
$file_path = get_attached_file($attachment_id);
$file_name = basename($file_path);
// Очищаем имя файла
$clean_name = $this->sanitize_filename($file_name);
// Генерация заголовка и alt
$title = $this->generate_title($clean_name);
$alt = $this->generate_alt($clean_name);
return [
'title' => $title,
'alt' => $alt
];
}
// Очистка имени файла
private function sanitize_filename($filename) {
// Удаляем расширение
$filename = pathinfo($filename, PATHINFO_FILENAME);
// Заменяем служебные символы
$filename = preg_replace('/[^a-zA-ZА-Яа-я0-9\s-]/', '', $filename);
// Заменяем несколько пробелов на один
$filename = preg_replace('/\s+/', ' ', $filename);
return trim($filename);
}
// Генерация заголовка
private function generate_title($clean_name) {
// Capitalize first letter
$title = ucfirst(str_replace(['-', '_'], ' ', $clean_name));
// Усечение до разумной длины
return mb_substr($title, 0, 100);
}
// Генерация alt
private function generate_alt($clean_name) {
// Преобразуем в нижний регистр
$alt = strtolower(str_replace(['-', '_'], ' ', $clean_name));
// Добавляем общие теги
$alt_variants = [
$alt . ' фото',
$alt . ' изображение',
'фото ' . $alt,
'изображение ' . $alt
];
// Случайный выбор варианта
return $alt_variants[array_rand($alt_variants)];
}
// Административные настройки (опционально)
public function add_settings_page() {
add_options_page(
'Настройки Auto Image Meta',
'Auto Image Meta',
'manage_options',
'auto-image-meta',
[$this, 'render_settings_page']
);
}
// Рендер страницы настроек
public function render_settings_page() {
?>
<div class="wrap">
<h1>Настройки Auto Image Meta</h1>
<form method="post" action="options.php">
<p>Автоматическая генерация alt и title для изображений</p>
<!-- Можно добавить дополнительные настройки -->
</form>
</div>
<?php
}
}
// Инициализация плагина
function init_auto_image_meta_plugin() {
new AutoImageMetaPlugin();
}
add_action('plugins_loaded', 'init_auto_image_meta_plugin');
// Хук для обновления существующих изображений (опционально)
function bulk_update_image_meta() {
$attachments = get_posts([
'post_type' => 'attachment',
'post_mime_type' => 'image',
'numberposts' => -1
]);
$plugin = new AutoImageMetaPlugin();
foreach ($attachments as $attachment) {
$plugin->set_image_meta_on_upload($attachment->ID);
}
}
register_activation_hook(__FILE__, 'bulk_update_image_meta');
Функционал плагина:
- Автоматическая генерация alt и title
- Очистка имени файла
- Несколько вариантов генерации alt
- Capitalize заголовка
- Ограничение длины
Преимущества:
- Полностью автоматическая работа
- Поддержка кириллицы
- Случайный выбор alt-текста
- Очистка имени файла
- Минимальные настройки
Установка:
- Сохраните код в файл
auto-image-meta.php
- Загрузите в папку
wp-content/plugins/
- Активируйте в панели управления
Рекомендации:
- Протестируйте на staging-сервере
- Настройте под свои нужды
- Используйте осторожно с большим количеством изображений
Дополнительно:
- Можно добавить страницу настроек
- Реализовать кастомные правила генерации
- Добавить поддержку мультиязычности
Примечание: При первой активации плагин обновит метаданные для всех существующих изображений.