Команда wp eval
предназначена для выполнения произвольного PHP-кода через WP-CLI. Это мощный инструмент, который позволяет разработчикам и администраторам решать задачи напрямую с помощью кода, минуя интерфейс WordPress.
Основной синтаксис команды
wp eval {php-code} [--skip-wordpress]
Аргументы
{php-code}
Обязательный аргумент, представляющий код на PHP, который вы хотите выполнить. Код указывается в виде строки.[--skip-wordpress]
Необязательный параметр, который позволяет выполнить код без загрузки ядра WordPress. Это полезно для выполнения задач, не связанных с WordPress, таких как генерация случайных чисел или манипуляции с данными на уровне PHP.
Особенности работы
- Глобальные переменные
Поскольку код выполняется внутри метода, если требуется доступ к глобальным переменным (например,$wpdb
или$current_user
), их нужно явно объявлять через ключевое словоglobal
. - Влияние загрузки WordPress
Если вы не используете параметр--skip-wordpress
, команда загрузит ядро WordPress, что может занять больше времени. Это важно учитывать при написании сложного кода.
1. Показ пути до каталога wp-content
Этот пример демонстрирует, как быстро получить путь к каталогу wp-content
.
wp eval 'echo WP_CONTENT_DIR;'
Вывод:
/var/www/my-site/wp-content
2. Генерация случайного числа без загрузки WordPress
Для ускорения выполнения используется параметр --skip-wordpress
.
wp eval 'echo rand(1000, 9999);' --skip-wordpress
Вывод:
5823
3. Получение имени текущего сайта
Если вам нужно узнать имя сайта, вы можете использовать функцию WordPress get_bloginfo()
.
wp eval 'echo get_bloginfo("name");'
Вывод:
Мой Веб-Сайт
4. Суммирование двух чисел
Пример простой математической операции, не требующей загрузки WordPress.
wp eval 'echo 25 + 75;' --skip-wordpress
Вывод:
100
5. Получение данных текущего пользователя
Если требуется информация о текущем пользователе, можно задействовать глобальную переменную $current_user
.
wp eval 'global $current_user; wp_get_current_user(); echo $current_user->user_email;'
Вывод:
[email protected]
6. Удаление временных файлов из каталога загрузок
Используем код для удаления временных файлов старше 7 дней.
wp eval '
$uploads_dir = wp_get_upload_dir()["path"];
$files = scandir($uploads_dir);
foreach ($files as $file) {
$file_path = $uploads_dir . "/" . $file;
if (is_file($file_path) && filemtime($file_path) < strtotime("-7 days")) {
unlink($file_path);
echo "Deleted: $file_path\n";
}
}
'
Вывод:
Deleted: /var/www/my-site/wp-content/uploads/temp1.txt
Deleted: /var/www/my-site/wp-content/uploads/temp2.log
7. Установка случайного значения для опции
В следующем примере мы обновляем значение опции с помощью произвольного числа.
wp eval 'update_option("random_value", rand(1000, 9999)); echo get_option("random_value");'
Вывод:
5732
8. Генерация мета-поля для записи
Добавляем уникальное мета-поле к записи с ID 15.
wp eval 'add_post_meta(15, "custom_meta_key", uniqid());'
Вывод:
Мета-данные добавлены
Советы по безопасности
- Избегайте выполнения неподтвержденного кода
Убедитесь, что вы понимаете код, который запускаете. Ошибки или вредоносный код могут привести к сбою работы сайта или потере данных. - Ограничьте доступ к WP-CLI
Разрешайте использование WP-CLI только администраторам, чтобы избежать случайного или намеренного нанесения ущерба. - Резервные копии
Перед выполнением кода, который изменяет данные (например, записи или настройки), создайте резервную копию базы данных.
Заключение
Команда wp eval
предоставляет огромные возможности для выполнения PHP-кода через WP-CLI. Она полезна как для быстрого тестирования, так и для выполнения сложных задач. Однако важно понимать риски и соблюдать меры безопасности при использовании данной команды.
С помощью примеров, описанных выше, вы сможете эффективно использовать wp eval
в своей работе.