WP-CLI — это мощный инструмент командной строки для управления WordPress-сайтами. Благодаря WP-CLI можно эффективно работать с медиафайлами, что особенно актуально для сайтов с большим количеством загруженного контента. В этой статье рассмотрим конкретные примеры управления медиафайлами с помощью WP-CLI, включая удаление ненужных файлов, оптимизацию изображений и массовое обновление метаданных.
Что такое WP-CLI и почему он полезен для управления медиафайлами
WP-CLI — это интерфейс командной строки для WordPress, позволяющий выполнять задачи без использования браузера. Для сайтов с большим объемом медиафайлов это значительно ускоряет и упрощает рутинные операции. Например, вместо удаления файлов через админку, что может быть медленно и неудобно, можно сделать это одной командой.
Особенно полезно применять WP-CLI для:
- Массового удаления неиспользуемых файлов;
- Переиндексации и обновления метаданных;
- Автоматической оптимизации изображений;
- Экспорта и импорта медиафайлов.
Для начала работы нужно иметь доступ к серверу по SSH и установленный WP-CLI. Проверить установку можно командой wp --info.
Удаление неиспользуемых или дубликатных медиафайлов через WP-CLI
Одна из частых задач — очистка медиатеки от файлов, которые не используются ни в одном из постов или страниц. WP-CLI позволяет выявить и удалить такие файлы.
Для поиска неиспользуемых вложений можно использовать плагин Clearfy Pro, который интегрируется с WP-CLI и расширяет возможности по управлению медиа.
Пример команды для поиска неиспользуемых вложений:
wp media list --field=ID --unusedПосле получения списка ID неиспользуемых файлов их можно удалить командой:
wp media delete $(wp media list --field=ID --unused)Обратите внимание, что перед удалением рекомендуется сделать резервную копию, чтобы избежать потери нужных данных.
Поиск и удаление дубликатов медиафайлов
Дубликаты часто появляются при повторных загрузках или миграциях сайта. Для поиска дубликатов можно использовать WP-CLI в сочетании с пользовательскими скриптами, например, на PHP, которые сравнивают хэши файлов в директории uploads.
Пример функции для поиска дубликатов по MD5-хэшу:
function wpupload_find_duplicate_media() {
$upload_dir = wp_upload_dir()['basedir'];
$files = scandir($upload_dir);
$hashes = [];
$duplicates = [];
foreach ($files as $file) {
$file_path = $upload_dir . '/' . $file;
if (is_file($file_path)) {
$hash = md5_file($file_path);
if (isset($hashes[$hash])) {
$duplicates[] = $file_path;
} else {
$hashes[$hash] = $file_path;
}
}
}
return $duplicates;
}Такой скрипт можно запускать через WP-CLI команду wp eval-file и затем удалить найденные дубликаты.
Оптимизация изображений через WP-CLI с помощью плагинов
Оптимизация изображений важна для ускорения загрузки сайта и снижения нагрузки на сервер. Многие плагины поддерживают управление через WP-CLI, например Clearfy Pro или WPRemark.
Команда для массовой оптимизации изображений через WP-CLI может выглядеть так:
wp image optimize --allЕсли плагин не поддерживает такую команду, можно написать собственный WP-CLI скрипт, который перебирает все вложения и применяет оптимизацию, например, с помощью библиотеки Imagick или GD.
Пример создания WP-CLI команды для оптимизации изображений
if (class_exists('WP_CLI')) {
WP_CLI::add_command('wpupload optimize_images', function() {
$args = [
'post_type' => 'attachment',
'post_mime_type' => 'image',
'posts_per_page' => -1,
];
$query = new WP_Query($args);
foreach ($query->posts as $attachment) {
$path = get_attached_file($attachment->ID);
if (file_exists($path)) {
// Здесь можно вызвать функцию оптимизации
wpupload_optimize_image($path);
WP_CLI::log("Оптимизировано: " . $path);
}
}
WP_CLI::success('Оптимизация изображений завершена.');
});
}
function wpupload_optimize_image($file_path) {
$image = new Imagick($file_path);
$image->stripImage(); // Удаление метаданных
$image->setImageCompressionQuality(85); // Качество компрессии
$image->writeImage($file_path);
$image->clear();
$image->destroy();
}Массовое обновление метаданных медиафайлов через WP-CLI
Иногда необходимо обновить или добавить метаданные (alt, title) к изображениям для SEO и доступности. WP-CLI позволяет сделать это быстро и массово.
Пример команды для массового обновления заголовков изображений:
wp media update $(wp media list --field=ID) --post_title='Новый заголовок'Для более гибкой настройки можно использовать PHP-скрипты с WP-CLI, которые перебирают вложения и присваивают метаданные на основе правил, например, имени файла или даты загрузки.
Пример скрипта для установки alt-тегов по имени файла
if (class_exists('WP_CLI')) {
WP_CLI::add_command('wpupload update_alt', function() {
$args = [
'post_type' => 'attachment',
'post_mime_type' => 'image',
'posts_per_page' => -1,
];
$query = new WP_Query($args);
foreach ($query->posts as $attachment) {
$filename = pathinfo(get_attached_file($attachment->ID), PATHINFO_FILENAME);
update_post_meta($attachment->ID, '_wp_attachment_image_alt', $filename);
WP_CLI::log("Обновлен alt для ID {$attachment->ID}: {$filename}");
}
WP_CLI::success('Alt-теги обновлены для всех изображений.');
});
}Выводы и рекомендации по работе с медиа через WP-CLI
WP-CLI — незаменимый инструмент для разработчиков и администраторов WordPress, особенно при работе с медиафайлами на больших сайтах. Возможность автоматизировать удаление, оптимизацию и обновление метаданных экономит время и снижает риск ошибок.
Рекомендуем использовать WP-CLI в связке с проверенными плагинами, такими как Clearfy Pro или WPRemark, для расширения функционала и удобства управления медиа.
Перед выполнением массовых операций всегда делайте резервные копии сайта и базы данных, чтобы избежать потери данных.