Ако някога сте чакали 30 секунди, за да зареди страница с „Разширения“ бек-офис, WP-CLI бързо ще се превърне в любимия ви пряк път. WordPress 6.9.4 (април 2026 г.), инструментите на CLI са достатъчно зрели, за да обработват 90% от операциите. поддръжка, без браузър, с използваеми лог файлове и по-добра възпроизводимост.

Какво ще изградим

Ще настройвате ориентиран към производството „инструментариум“ за WP-CLI, състоящ се от:

  • от основата на основни команди (ядро, плъгини, теми, база данни, потребители, cron),
  • на възпроизводим работен процес за диагностика и актуализиране,
  • многократно използваем Bash скрипт за работа с множество сайтове,
  • и пример за персонализирана WP-CLI команда (mu-plugin) за стандартизиране на вашите операции.

Предназначен е за „истински“ WordPress сайтове: блогове с висок трафик, сайтове за представяне с конструктори на страници (Divi 5, Elementor, Avada), мултисайтове, среди за подготовка/производство.

В крайна сметка ще знаете:

  • насочете се към правилния WordPress екземпляр от терминала (и избягвайте грешката класическо „В грешен файл съм“),
  • актуализиране, като същевременно се ограничават рисковете (режим на поддръжка, проверки, прагматично връщане назад),
  • бърз одит на уебсайт (версии, активни теми, cron задачи, чувствителни опции),
  • Автоматизирайте рутините си и създайте свои собствени команди.

Бързо обобщение

  • Първо проверете : wp --infoСлед това wp core version et wp plugin list.
  • Насочвайте се изрично уебсайтът: --path, --urlи избягвайте „текст в празнотата“.
  • Преди актуализация експортиране на база данни + списък с версии, след това актуализация, накрая тестове за дим.
  • Търсене-замяна винаги с --dry-run и бъдете внимателни със сериализираните данни (WP-CLI се справя с това, но опциите ви може да са трудни).
  • Автоматизирайте Bash скриптове + кодове за връщане и централизирайте командите си в WP-CLI mu-плъгин.
  • Сигурност Няма тайни в историята на черупките, няма --allow-root по навик и регистрирайте транзакциите си.

Кога да използвате това решение

  • Когато управлявате множество обекти и административната част е твърде бавна (или недостъпна).
  • Когато имате нужда да индустриализирам седмични актуализации, проверки на версиите, експортиране на база данни, временно прочистване.
  • Когато работите в headless/CI/CD среди (GitHub Actions, GitLab CI и др.).
  • Когато е необходимо да диагностицирате повреден сайт (фатална грешка в администраторския панел): WP-CLI често остава използваем.

Кога НЕ трябва да използвате това решение

  • Ако нямате надежден SSH достъп (заключен споделен хостинг). В този случай вижте раздела „Вариант / Алтернатива“.
  • Ако не можете да тествате на етап staging: изпълнете a search-replace или голяма „актуализация на живо“ без предпазна мрежа е лоша идея.
  • Ако вашият доставчик на хостинг услуги налага собствена обвивка (някои панели), която скрива PHP средата: WP-CLI може да работи с различна PHP версия от тази на сайта.

Преди да започнете (предварителни изисквания)

защита преди всяка разрушителна команда (db import, search-replace(Актуализиране), направете резервно копие на базата данни и, ако е възможно, моментна снимка на директорията wp-content.

  • Цел на WordPress: 6.9.4 (или по-скорошни).
  • Препоръчително е PHP: 8.1 + (8.2/8.3 са често срещани през 2026 г.). Проверете дали WP-CLI използва същата версия на PHP като вашия FPM/Apache.
  • Достъп: SSH + права за запис на сайта (или поне на wp-content и базата данни).

Полезни инструменти :

  • Тестова среда (една и съща база, едни и същи плъгини, една и съща тема);
  • Система за контрол на версиите (Git);
  • Инструмент за сравнение на износ (например diff, jq (ако започнете от JSON).

Предпазни мерки (Повтарям това, защото често виждам грешката):

  • Избягвайте да поставяте пароли като обикновен текст в терминала (историята на обвивката).
  • Не използвайте --allow-root „Като рефлекс.“ Ако е необходимо, документирайте защо.
  • Предпочитайте да използвате именувани SSH акаунти + sudo и log команди.

Полезни официални документи:

Стъпка 1: Инсталирайте WP-CLI правилно и проверете средата

На повечето Linux сървъри, методът за инсталиране „phar“ остава най-лесният. Целта: двоичен файл wp налично и изпълнение с правилния PHP.

1.1 Инсталиране на WP-CLI (pharm)

Свържете се чрез SSH, след което:

# Téléchargement du phar
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

# Vérification basique : le fichier doit répondre
php wp-cli.phar --info

# Rendre exécutable et installer globalement
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

# Vérifier la commande
wp --info

Очакван резултат: wp --info показва версията на WP-CLI, използвания PHP и някои пътища.

1.2 Проверете дали WP-CLI използва правилния PHP код

Класическият капан: вашият сайт работи на PHP 8.2 чрез FPM, но WP-CLI извиква PHP 8.1 (или по-лош). Сравнете:

php -v
wp --info

Ако версиите се различават, коригирайте ги, като използвате изричен псевдоним или път до правилния PHP двоичен файл (в зависимост от вашата дистрибуция). Пример (ще бъде адаптиран):

# Exemple : forcer PHP 8.2 pour WP-CLI
alias wp='php8.2 /usr/local/bin/wp'

Често виждам този проблем на сървъри с множество PHP инсталации (Plesk, cPanel, Docker „multi“ образи).

1.3 Инсталиране на автоматично довършване (по избор, но си струва)

WP-CLI предлага автодопълване на командния интерфейс (shell completion). Вижте документацията на WP-CLI (в зависимост от bash/zsh). Това е значително повишаване на производителността.

Стъпка 2: Изберете правилната инсталация на WordPress (и избягвайте нарушаване на производствената среда)

WP-CLI работи „контекстно зависимо“. Трябва да сте в правилната директория (тази, която съдържа wp-config.php) или дайте --path.

2.1 Разберете дали сте на правилното място

# Depuis un dossier supposé être la racine du site
wp core is-installed

# Si ça échoue, vérifiez le chemin
pwd
ls -la

Очакван резултат: код за връщане 0 (успех). Ако WP-CLI отговори, че не може да намери WordPress, почти винаги е в лоша директория.

2.2 Използвайте –path и –url (препоръчително за конфигурации с множество сайтове/множество инстанции)

# Exemple : cibler explicitement une instance
wp --path=/var/www/site1/public core version

# Exemple : cibler une URL (utile si WP_HOME/WP_SITEURL diffèrent)
wp --path=/var/www/site1/public --url=https://example.com option get home

2.3 Създаване на wp-cli.yml файл за всеки проект

създавам wp-cli.yml в основата на проекта (на същото ниво като wp-config.phpТова избягва повторението. --path.

# À la racine de votre site
cat > wp-cli.yml <<'YAML'
path: public
# url: https://example.com
YAML

Очакван резултат: от родителската папка, wp core version работи.

Стъпка 3: Бърза диагностика (ядро, PHP, разширения, състояние на сайта)

Преди да започна каквото и да било, винаги правя „логическа снимка“: версии, активни плъгини, тема и няколко критични опции.

3.1 Версии и контекст

wp --info
wp core version
wp core verify-checksums

verify-checksums Сравнете основните файлове с официалните контролни суми. Много полезно. après инцидент (модифицирани файлове, основен зловреден софтуер, непълно внедряване). На сайтове, неправилно „персонализирани“ в wp-includesВеднага се връща нагоре.

3.2 Плъгини и теми (използваем инвентар)

wp plugin list --status=active
wp plugin list --format=csv > /tmp/plugins.csv

wp theme list
wp theme list --status=active

3.3 Състояние на сайта чрез WP-CLI

Модулът „Site Health“ (Състояние на сайта) е достъпен чрез WP-CLI при стандартни инсталации. Тествайте го:

wp site health status
wp site health info --format=json > /tmp/site-health.json

Ако вашият хостинг или WordPress версия не предоставя тази команда, ще получите съобщение за грешка. В този случай се придържайте към командите за контрол на версиите и проверете PHP/nginx лог файловете.

3.4 Бърза диагностична таблица (често срещани симптоми)

симптом Вероятна причина проверка Решение
Грешка „Това изглежда не е инсталация на WordPress“ Лош рекорд / лошо --path ls (наличие на wp-config.php) употреба --path където wp-cli.yml
WP-CLI работи, но сайтът се срива след актуализацията. Несъвместимост на плъгини/теми + PHP wp plugin list + логове Деактивирайте дефектния плъгин чрез WP-CLI, версия за връщане към предишната версия
Бавни команди Кеш на обекти / База данни пълна / DNS wp profile stage (ако е налично), мониторинг Ограничете автоматичното зареждане, проверете кеша, оптимизирайте базата данни
Разлика в поведението между CLI и уеб Различни PHP, променливи на средата, системен потребител php -v vs wp --info Принудително инсталиране на правилния PHP, подравняване на средата

Стъпка 4: Надеждни актуализации (ядро, плъгини, теми) + прагматично връщане към предишни версии

Актуализациите с едно щракване са удобни, но трудни за одит. С помощта на интерфейса на командния ред (CLI) можете да регистрирате, поръчвате и проверявате актуализации.

4.1 Подготовка: поддръжка + архивиране на базата данни

# Activer le mode maintenance
wp maintenance-mode activate

# Export DB horodaté (à stocker hors serveur si possible)
wp db export "/tmp/db-$(date +%F-%H%M).sql"

# Capturer l'état des plugins/thèmes
wp plugin list --format=json > "/tmp/plugins-$(date +%F-%H%M).json"
wp theme list --format=json > "/tmp/themes-$(date +%F-%H%M).json"

Очакван резултат: експортиран SQL файл и два JSON инвентаризация.

4.2 Актуализиране на ядрото на WordPress

# Vérifier les mises à jour disponibles
wp core check-update

# Mettre à jour vers la dernière version stable
wp core update

# Mettre à jour la base si nécessaire
wp core update-db

В WordPress 6.9.4, update-db Обикновено би трябвало да е без опция, но на сайтове, които са пропуснали няколко версии, това има значение.

4.3 Актуализиране на плъгини и теми

wp plugin update --all
wp theme update --all

Ако управлявате сайтове с Divi 5 / Elementor / Avada, често препоръчвам да актуализирате в този ред:

  • „Инфраструктурни“ плъгини (кеш, сигурност, SEO),
  • конструктор на страници (Elementor / Divi / Fusion),
  • тема (Авада / Диви)
  • добавки за строители.

Това намалява сценариите, при които добавката очаква по-нов конструктор на API.

4.4 Бързо деактивиране на плъгин, който нарушава работата на сайта

Когато администраторският панел е недостъпен (фатална грешка), WP-CLI е вашият бутон за „деактивиране“:

# Désactiver un plugin précis
wp plugin deactivate nom-du-plugin

# Désactiver tous les plugins (utile pour isoler)
wp plugin deactivate --all

4.5 Прагматично връщане назад

WP-CLI не поддържа универсално връщане към предишни версии за всички плъгини. На практика надеждното връщане към предишни версии се постига чрез:

  • вашият архив (база данни + файлове),
  • или Git + внедряване,
  • или преинсталиране на определена версия, когато плъгинът го позволява.
# Réinstaller WordPress core (même version) si fichiers corrompus
wp core download --force

# Installer une version précise d'un plugin (si disponible sur .org)
wp plugin install woocommerce --version=9.1.0 --force

Забележка: ако плъгинът идва от пазар (Divi, Avada) или частен zip архив, ще трябва да предоставите zip файла или да го използвате чрез техния механизъм.

4.6 Излизане от поддръжката

wp maintenance-mode deactivate

Стъпка 5: Управлявайте потребители и роли, без да преминавате през администраторския панел

Използвам го главно за: създаване на временен администраторски акаунт по време на подготовка, коригиране на имейл, налагане на нулиране на парола или одитиране на това кой има високи права.

5.1 Списък и филтър

wp user list --fields=ID,user_login,user_email,roles,registered
wp user list --role=administrator --fields=ID,user_login,user_email

5.2 Създаване на временен администратор (само за подготовка)

wp user create admin-temp [email protected] --role=administrator --user_pass="$(openssl rand -base64 24)"

Избягвайте да правите това в производствена среда без система за заявки/проследимост. И изтрийте акаунта след това.

5.3 Нулиране на парола

wp user update monlogin --user_pass="NouveauMotDePasseFortIci"

Истински капан: поставянето на паролата ви като обикновен текст в shell-а оставя следа в историята. Предпочитайте интерактивен вход (или мениджър на секретни пароли) в зависимост от вашите нужди.

Стъпка 6: Управление на съдържание, редакции, медии и почистване

WP-CLI е много ефективен за почистване без плъгин за „еднократно инсталиране“, особено когато искате възпроизводим резултат.

6.1 Броене и изброяване на съдържанието

wp post list --post_type=post --posts_per_page=10 --fields=ID,post_title,post_date,post_status
wp post list --post_type=page --post_status=publish --fields=ID,post_title

6.2 Групово почистване на ревизии

В сайтове с инструменти за изграждане на страници, ревизиите могат да се „експлодират“ (всяко запазване на конструктора създава нова ревизия). Преди да изтриете каквото и да било, измерете резултатите.

# Compter les révisions
wp post list --post_type=revision --format=count

# Supprimer les révisions (irréversible sans backup)
wp post delete $(wp post list --post_type=revision --format=ids) --force

Класически капан: на много голям сайт, заместване $(...) може да надвишава ограничението за дължина на поръчката. В този случай изтривайте на партиди (вижте „Капани“).

6.3 Регенериране на миниатюри (в зависимост от вашия стек)

WP-CLI предоставя медийни команди, но пълната регенерация често зависи от плъгини. Ако използвате плъгин за регенерация, който предоставя WP-CLI команди, използвайте го. В противен случай, следната команда може да помогне в прости случаи:

# Lister quelques attachements
wp media list --posts_per_page=5 --fields=ID,post_title,guid

# Exemple : régénération basique (selon version/commandes disponibles)
wp media regenerate --yes

Si wp media regenerate не е наличен във вашата WP-CLI инсталация, не го насилвайте: инсталирайте съвместим инструмент или използвайте специален плъгин.

Стъпка 7: База данни: експортиране, търсене и замяна, оптимизации и капани

Базата данни е мястото, където грешките са скъпоструващи. Моделът: експорт → пробен период → изпълнение → проверки.

7.1 Износ / Внос

# Export
wp db export /tmp/backup.sql

# Import (dangereux en production)
wp db import /tmp/backup.sql

7.2 Търсене и замяна (миграция на http→https, промяна на домейн)

WP-CLI обработва много сериализирани данни правилно. Но все пак трябва да направите --dry-run и изключете това, което не трябва да се движи (понякога GUID).

# Simulation
wp search-replace 'http://ancien.tld' 'https://nouveau.tld' --dry-run

# Exécution
wp search-replace 'http://ancien.tld' 'https://nouveau.tld' --skip-columns=guid --report-changed-only

Често съм виждал подмяната на guid Нарушаване на RSS емисии или логиката на импортиране. Следователно --skip-columns=guid в по-голямата част от миграциите.

7.3 Диагностициране на автоматично зареждане (често срещана причина за бавност)

Когато началната страница се зарежда за 2 секунди без причина, почти винаги проверявам опциите за автоматично зареждане за прекомерно тегло.

# Lister les plus grosses options autoload (nécessite MySQL/MariaDB accessible)
wp db query "
SELECT option_name, LENGTH(option_value) AS bytes
FROM wp_options
WHERE autoload = 'yes'
ORDER BY bytes DESC
LIMIT 20;
"

Коригирайте префикса wp_ ако е необходимо (или го извлечете чрез wp config get table_prefix).

7.4 Оптимизиране (с повишено внимание)

wp db optimize

При някои управлявани хостинг планове тази команда е или забранена, или ненужна (оптимизацията се обработва от страна на инфраструктурата). Ако не успее, това не е непременно проблем.

Стъпка 8: wp-config, кеш, cron и планирани задачи

Тази стъпка обхваща операции, които разрешават „странни“ инциденти: непоследователни опции, блокиран cron, кеш, който крие корекция.

8.1 Четене/запис в wp-config.php

# Lire une constante
wp config get WP_DEBUG

# Activer WP_DEBUG (à faire sur staging ou temporairement)
wp config set WP_DEBUG true --raw

# Désactiver l'édition de fichiers via l'admin
wp config set DISALLOW_FILE_EDIT true --raw

Истински капан: забравяне --raw записва низ вместо булева стойност. В крайна сметка получавате 'true' вместо trueМоже да изглежда, че „работи“, а след това да наруши дадено поведение.

8.2 Изчистване на определени кешове на WordPress

# Purger les transients expirés
wp transient delete --expired

# Purger les caches d'objets (si object cache actif)
wp cache flush

При кеширащите плъгини (WP Rocket, LiteSpeed ​​​​Cache и др.), целият процес на почистване зависи от плъгина. Много от тях предоставят WP-CLI команда, но това не е стандартно. Проверете документацията на вашия плъгин.

8.3 Cron: Изброяване, изпълнение, дебъгване

# Lister les événements cron
wp cron event list

# Exécuter tous les événements dus
wp cron event run --due-now

# Exécuter un hook précis
wp cron event run action_scheduler_run_queue

В сайтовете на WooCommerce, екосистемата на Action Scheduler често е източник на „чакащи задачи“. Точният hook може да варира в зависимост от версията/плъгина, така че започнете с wp cron event list.

Стъпка 9: Минималистичен одит на сигурността (без фалшиви обещания)

WP-CLI не замества скенер за сигурност, но можете да направите много конкретен „хигиенен“ одит.

9.1 Проверка на целостта на ядрото

wp core verify-checksums

9.2 Избройте администраторите и техните имейл адреси

wp user list --role=administrator --fields=ID,user_login,user_email,registered

9.3 Идентифицирайте „mu-плъгините“ и дроп-ините

wp plugin list --field=name
wp plugin list --status=must-use
wp config get WP_CACHE

Drop-in-овете (object-cache.php, advanced-cache.php) и mu-плъгините са често срещани места, където се намират критични персонализации... или изненади.

9.4 Проверка на ключовете за сигурност (без показването им)

Не искате да показвате солите си в споделен терминал. Вместо това, просто проверете дали константите съществуват:

wp config has AUTH_KEY
wp config has SECURE_AUTH_KEY
wp config has LOGGED_IN_KEY
wp config has NONCE_KEY

Стъпка 10: Автоматизирайте с Bash скриптове + персонализирани WP-CLI команди

Две нива: Bash скрипт (прост, преносим), след това персонализирана WP-CLI команда (стандартизация от страна на WordPress).

10.1 Bash скрипт: „безопасна“ рутина за обновяване

Създаване на файл wp-update-routine.sh на вашата машина (или на сървъра), след което го направете изпълним.

#!/usr/bin/env bash
set -euo pipefail

# --- Configuration ---
WP_PATH="${WP_PATH:-/var/www/site/public}"
WP_URL="${WP_URL:-https://example.com}"
BACKUP_DIR="${BACKUP_DIR:-/tmp}"

timestamp="$(date +%F-%H%M%S)"
db_backup="${BACKUP_DIR}/db-${timestamp}.sql"
plugins_snapshot="${BACKUP_DIR}/plugins-${timestamp}.json"
themes_snapshot="${BACKUP_DIR}/themes-${timestamp}.json"

# --- Vérifications ---
wp --path="$WP_PATH" --url="$WP_URL" core is-installed >/dev/null

echo "[1/7] Activation maintenance"
wp --path="$WP_PATH" maintenance-mode activate

echo "[2/7] Backup DB: $db_backup"
wp --path="$WP_PATH" db export "$db_backup"

echo "[3/7] Snapshots plugins/thèmes"
wp --path="$WP_PATH" plugin list --format=json > "$plugins_snapshot"
wp --path="$WP_PATH" theme list --format=json > "$themes_snapshot"

echo "[4/7] MAJ core + DB"
wp --path="$WP_PATH" core update
wp --path="$WP_PATH" core update-db

echo "[5/7] MAJ plugins + thèmes"
wp --path="$WP_PATH" plugin update --all
wp --path="$WP_PATH" theme update --all

echo "[6/7] Flush caches"
wp --path="$WP_PATH" cache flush || true
wp --path="$WP_PATH" transient delete --expired || true

echo "[7/7] Désactivation maintenance"
wp --path="$WP_PATH" maintenance-mode deactivate

echo "OK: sauvegarde DB = $db_backup"

Екзекуция:

chmod +x wp-update-routine.sh
WP_PATH=/var/www/site/public WP_URL=https://example.com ./wp-update-routine.sh

Очакван резултат: пълна актуализация с архивиране на базата данни и снимки. В случай на неуспех, скриптът спира (благодарение на set -e) и знаете на кой етап.

10.2 Персонализирана WP-CLI команда (mu-plugin): „bp audit“

Създаване на файл wp-content/mu-plugins/bp-cli-audit.phpАко файлът mu-plugins Ако не съществува, създайте го. Mu-плъгините се зареждат автоматично.

<?php
/**
 * Plugin Name: BP CLI Audit
 * Description: Commandes WP-CLI internes pour auditer rapidement un site.
 * Author: Votre équipe
 * Version: 1.0.0
 */

declare(strict_types=1);

if ( ! defined('WP_CLI') || ! WP_CLI ) {
	// Sécurité : ne rien exécuter en contexte web.
	return;
}

/**
 * Petite commande d'audit orientée ops.
 *
 * Usage:
 *   wp bp audit
 */
final class BP_CLI_Audit_Command {

	/**
	 * Affiche un audit synthétique (versions, thème, plugins actifs, autoload top).
	 *
	 * ## EXAMPLES
	 *     wp bp audit
	 *
	 * @when after_wp_load
	 */
	public function audit( array $args, array $assoc_args ): void {

		// 1) Versions
		WP_CLI::log('--- Versions ---');
		WP_CLI::log('WordPress: ' . get_bloginfo('version'));
		WP_CLI::log('PHP: ' . PHP_VERSION);

		// 2) Thème actif
		$theme = wp_get_theme();
		WP_CLI::log('--- Thème actif ---');
		WP_CLI::log($theme->get('Name') . ' ' . $theme->get('Version'));

		// 3) Plugins actifs
		WP_CLI::log('--- Plugins actifs ---');
		$active = (array) get_option('active_plugins', []);
		if (empty($active)) {
			WP_CLI::log('(aucun plugin actif)');
		} else {
			foreach ($active as $plugin_file) {
				WP_CLI::log('- ' . $plugin_file);
			}
		}

		// 4) Options autoload les plus lourdes (top 10)
		global $wpdb;
		WP_CLI::log('--- Autoload (top 10) ---');

		// Attention : requête volontairement simple ; sur très gros sites, adaptez (index, LIMIT).
		$results = $wpdb->get_results(
			"SELECT option_name, LENGTH(option_value) AS bytes
			 FROM {$wpdb->options}
			 WHERE autoload = 'yes'
			 ORDER BY bytes DESC
			 LIMIT 10",
			ARRAY_A
		);

		if (empty($results)) {
			WP_CLI::log('(aucune donnée)');
			return;
		}

		foreach ($results as $row) {
			WP_CLI::log(sprintf('- %s : %d bytes', $row['option_name'], (int) $row['bytes']));
		}
	}
}

WP_CLI::add_command('bp audit', BP_CLI_Audit_Command::class);

тест:

wp bp audit

Очакван резултат: четлив одит, полезен при управление на инциденти. След това можете да го подобрите (cron, константи и др.).

Пълният резултат

На този етап имате:

  • WP-CLI инсталиран и синхронизиран с вашия PHP,
  • чисто насочване чрез --path/--url ou wp-cli.yml,
  • скриптирана рутина за актуализиране с архивиране,
  • mu-плъгин, който добавя команда за одит.

Бързо персонализиране

  • Добави заключване за сигурност В скрипта: разрешаване на изпълнение само при подготовка (напр. проверка WP_ENVIRONMENT_TYPE от wp option get или константа).
  • Регистриране във файл: пренасочване на stdout/stderr към /var/log/wp-cli-ops.log.
  • На мултисайт: добавете --network за актуализации на плъгините, когато е необходимо.

Адаптиране за Divi 5 / Elementor / Avada

WP-CLI не е „специфичен“ за конструкторите на страници, но променя приоритетите ви за поддръжка.

Диви 5

  • Актуализациите на Divi (тема/плъгин) често идват от платен канал. В CLI можете активиране/деактивиране, избройте версиите, но инсталацията/връщането назад зависи от вашия механизъм (zip, API, Elegant Themes manager).
  • В сайтовете на Divi обръщам особено внимание на размера на ревизиите и автоматичното зареждане (конструктор на опции).
wp post list --post_type=revision --format=count
wp bp audit

Elementor

  • Elementor + добавки = риск от каскадни несъвместимости. Направете моментна снимка на версиите (вече обхванати) и актуализирайте Elementor, преди да актуализирате определени добавки.
  • Ако получите бял екран, първо деактивирайте добавките, след това Elementor, ако е необходимо.
wp plugin list | grep -i elementor
wp plugin deactivate elementor-pro
wp plugin deactivate elementor

Авада (Fusion Builder)

  • Авада често се съчетава с Fusion Core / Fusion BuilderСъщата логика: актуализирайте „ядрото“ на Avada по начин, който е съвместим с неговите плъгини.
  • В Avada често съм виждал агресивно кеширане като маска за решение: purge plugin cache + wp cache flush.
wp cache flush
wp transient delete --expired

Последна проверка

  1. WP-CLI може да вижда сайта :
    wp core is-installed
    wp core version
  2. Без поддръжка, заключен режим :
    wp maintenance-mode status
  3. Последователни плъгини/теми :
    wp plugin list --status=active
    wp theme list --status=active
  4. Cron operative :
    wp cron event list --fields=hook,next_run
    wp cron event run --due-now
  5. Уеб тестове за дим (ръчно):
    • начална страница,
    • създател на страници (Divi/Elementor/Avada),
    • вход за администратор,
    • публикуване на чернова (ако е възможно на етап подготовка).

Ако резултатът не е такъв, какъвто се очаква

  • Имате грешка „Не можа да се отвори входният файл: wp“
    Провери това /usr/local/bin е във вашия PATHили се обадете /usr/local/bin/wp --info.
  • WP-CLI показва, че WordPress не е инсталиран
    Вие сте в грешната папка. Използвайте --path или създайте wp-cli.ymlПроверете също правата за четене на wp-config.php.
  • След актуализацията сайтът има фатална грешка.
    Деактивирайте дефектния плъгин: wp plugin deactivate nom-du-pluginПроверете PHP лог файловете. Ако сте актуализирали без snapshot, ще си загубите време.
  • Търсенето със замяна наруши някои URL адреси.
    Вероятно сте го заменили с нещо твърде общо (напр. „включи“ guid(или заменете подниз, присъстващ в JSON данните). Възстановете базата данни от експорта, след което започнете отново с --dry-run и по-строги модели.
  • Промените не са видими
    Кеш: изчистване на кеша/CDN на плъгина, след това wp cache flushОт страна на браузъра, тествайте в режим на частно сърфиране.

Често срещани капани и грешки

Грешка Причина Решение
изпълнява wp search-replace за продукцията „да върви бързо“ Без подготовка + без резервно копие Експортиране на база данни преди това, --dry-runпрозорец за поддръжка, валидиране
употреба --allow-root Partout Лош навик / копирани скриптове Коригирайте разрешенията, използвайте специален потребител, документирайте изключението
Изтриването на редакции с една команда е неуспешно Ограничение на дължината на командата на Shell Изтриване на групи (вижте по-долу)
WP_DEBUG дефинирано в низ Забравяне --raw wp config set WP_DEBUG true --raw
Бавни WP-CLI команди Огромна автоматично зареждаща се/бавна база данни/DNS Одит на автоматично зареждане, оптимизиране на базата данни, проверка на мрежата

Изтриване на редакции на партиди (устойчив модел)

# Supprimer 500 révisions à la fois
while true; do
  ids="$(wp post list --post_type=revision --posts_per_page=500 --format=ids)"
  if [ -z "$ids" ]; then
    break
  fi
  wp post delete $ids --force
done

Вариант / алтернатива

Алтернатива без SSH: плъгин „WP Crontrol“ + инструменти за администриране

Ако нямате SSH, можете да получите достъп до някои задачи чрез администраторския интерфейс:

  • управление на cron чрез плъгин (напр. WP Crontrol),
  • управление на плъгини/теми чрез интерфейса,
  • експортиране на база данни чрез хостинг доставчика (phpMyAdmin, управляеми инструменти).

Губите възпроизводимост и прецизно регистриране. За напреднали сайтове това често е временен компромис.

По-напреднала алтернатива: стартирайте WP-CLI в контейнер (Docker) възможно най-близо до производствената среда.

Ако имате контейнеризиран стек, стартирайте WP-CLI в същия PHP контейнер (същите разширения, същият ini файл). Това е най-добрият начин да избегнете несъответствия между CLI/уеб.

Съвети за безопасност, производителност и поддръжка

  • Дневник Пренасочвайте изходите си към лог и дръжте експортите на базата данни извън сървъра, когато е възможно.
  • Избягвайте тайни Не съхранявайте пароли като обикновен текст в скриптове. Използвайте променливи на средата, инжектирани от мениджър на секрети.
  • Стандартизирайте : A wp-cli.yml на проект + mu-плъгин с вътрешни команди = по-малко човешки грешки.
  • Тестване в тестова среда Конструкторите на страници и техните добавки понякога имат изненадващи съвместимости; „незначителна“ актуализация може да повреди модул.
  • Следете автоматичното зареждане : това е подценен източник на бавност, особено при плъгини, които съхраняват JSON blob-ове.

За да се отиде по-далеч

  • Добавяне на команда wp bp preflight която проверява: дисково пространство, версия на PHP, критични плъгини и блокове, ако дадено условие не е изпълнено.
  • Интегрирайте WP-CLI във вашата CI: PHP lint, тестове и след това wp core verify-checksums в ефимерна среда.
  • Създайте рутина за „инциденти“: каскадно деактивиране на плъгини, постепенно повторно активиране, експортиране на лог файлове, заснемане site health info.
  • За многосайтови: мрежови команди (wp site list, wp plugin activate --network) и специфични за обекта одитни скриптове.

ресурси

Често задавани въпроси

WP-CLI „съвместим“ ли е с WordPress 6.9.4?

Да, стига да използвате скорошна версия на WP-CLI и съвместим PHP. Критичният момент не е WordPress, а подравняването. PHP CLI срещу PHP уебЗапочнете от wp --info.

Как да избегнем изпълнението на команди на грешен сайт?

Използвайте систематично --path et --url във вашите скриптове или wp-cli.ymlНа многосайтови сървъри това е разликата между чиста рутина и инцидент.

Това е wp search-replace Безопасно ли е за сериализирани данни?

WP-CLI обработва много случаи правилно, но „безопасно“ зависи от това какво замествате. Винаги го правете. --dry-runизбягвам guid В повечето случаи дръжте експортирана база данни готова за възстановяване.

Как да деактивирам плъгин, ако администраторският панел е недостъпен?

wp plugin deactivate nom-du-pluginАко не знаете кой от тях, деактивирайте всичко (--all), след което постепенно реактивирайте.

Може ли Divi/Avada да се актуализира чрез WP-CLI?

Можете да управлявате активирането/деактивирането и инвентара. За актуализациите всичко зависи от техния канал (премиум, zip, API). На практика често автоматизирате това, като изтеглите zip файла. wp theme install/wp plugin install с --force.

Как да изброя cron задачите, които достигат капацитет?

Започнете с wp cron event listсортиране по следващо изпълнение и изпълнение wp cron event run --due-nowВ WooCommerce следете куките, свързани с Action Scheduler.

Pourquoi wp cache flush Не променя ли нищо?

Защото основният ви кеш може да е кеш на страница (плъгин) или CDN. wp cache flush Фокусирайте се предимно върху кеша на обектите. Също така, изчистете кеша на плъгините и CDN.

Как да стартирам WP-CLI на мултисайт?

употреба --url да се насочите към даден сайт и --network За определени мрежови операции (напр. мрежово активиране на плъгини), проверете с wp site list ако командата е налична във вашия контекст.

Може ли WP-CLI да поправи „цикъл на пренасочване“ след миграция?

Често да: проверете home et siteurl (wp option get home, wp option get siteurl), след което го коригирайте. Пренасочванията могат да идват и от прокси/CDN (заглавки) или плъгина за кеширане.

Каква е най-добрата практика за споделяне на WP-CLI скриптове в екип?

Git хранилище за „ops“ + променливи на средата + mu-плъгин за вътрешни команди. Получавате версирани, преглеждаеми и последователни рутини в различните сайтове.