Как использовать WP-CLI для управления медиафайлами в WordPress

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, для расширения функционала и удобства управления медиа.

Перед выполнением массовых операций всегда делайте резервные копии сайта и базы данных, чтобы избежать потери данных.

Как автоматически удалять файлы WooCommerce после отмены заказа без плагинов
25.05.2026
Как защитить загружаемые файлы WordPress от неавторизованного доступа
12.04.2026
Как разрешить и использовать WooCommerce REST API в WordPress
09.11.2025
Как организовать отложенную загрузку файлов в WordPress
09.02.2026
Как использовать фильтры для оптимизации загрузки файлов в WordPress
05.12.2025

wp upload - это директория в WP для загрузки файлов. Подробнее про загрузку файлов в админку можно почитать на этой странице.