НОВИНА
Checkout Files Upload за WooCommerce приема файлове от всеки. Вижте дали Вашият е засегнат
WordPress

Командите в WP-CLI, които спестяват най-много време

# ЕтикетиcPanel
Екипът на WPhost12 мин четене

Когато админът на WordPress не се отваря или когато трябва да обновите много неща наведнъж, кликането в браузъра отнема време. WP-CLI е командният ред за WordPress и върши същото с една команда, без браузър.

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

Какво е WP-CLI и има ли го на Вашия хостинг?

С WP-CLI обновявате ядрото, плъгините и темите, създавате потребители, сменяте адреси в базата и проверявате файловете, всичко от командния ред. Не всеки хостинг го предлага. Terminal в cPanel се вижда само ако доставчикът го е включил за акаунта Ви, а на сървъра трябва да е инсталиран и WP-CLI. Ето как да проверите.

Отворете cPanel, намерете Terminal в раздела Advanced и влезте в папката на сайта, там, където е файлът wp-config.php. Основният сайт обикновено е в public_html.

Bash
# cPanel > Terminal
cd ~/public_html
ls wp-config.php
wp --info

Ако видите версията на WP-CLI и на PHP, всичко е готово. wp --info е същото като wp cli info и работи, дори да не сте в папка на WordPress. Версията на PHP, която показва, е тази на Terminal, а тя може да се различава от версията на сайта.

Ако получите „command not found“, WP-CLI не е достъпен за Вас на този хостинг и трябва да попитате доставчика. Ако видите „This does not seem to be a WordPress installation“, значи сте в грешната папка. Влезте в папката на сайта или добавете --path= с пътя до нея.

Дамп и възстановяване на базата

wp db export прави дамп, тоест копие на цялата база в един файл, а wp db import връща базата от такъв файл. WP-CLI взима данните за връзка от wp-config.php, затова не е нужно да въвеждате парола. Записвайте файла в началната си папка, не в public_html, защото файл оттам може да се изтегли от интернет.

Bash
# cPanel > Terminal, в папката на сайта
wp db export ~/baza-pred-promyana.sql
ls -lh ~/baza-pred-promyana.sql

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

Bash
# Връща базата към дампа. Новото след дампа се губи.
wp db import ~/baza-pred-promyana.sql

Обновяване на WordPress, плъгини и теми

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

Bash
# cPanel > Terminal, в папката на сайта
wp core version
wp core check-update

Обновяването става с wp core update. С --minor командата обновява само до по-малки версии с поправки и не прескача към следващата голяма версия. Така е по-безопасно, ако плъгините Ви още не са проверени с нея.

Bash
# Променя файловете на ядрото. Първо дамп на базата.
wp core update --minor

Командите, които показват плъгините и темите, също само четат. Таблицата показва име, статус, дали има обновление и коя е новата версия. Преди да обновите, вижте какво ще се обнови. --dry-run показва плъгините, които ще се обновят, и нищо не променя.

Bash
# cPanel > Terminal, в папката на сайта
wp plugin list
wp theme list
wp plugin update --all --dry-run

После обновявайте плъгините един по един, а не всички наведнъж. Така, ако нещо се счупи, ще знаете кой го е причинил. Същото важи и за темите. Пуснете wp theme update --all --dry-run за проба и wp theme update ИМЕ_НА_ТЕМАТА за обновяване.

Bash
# Един плъгин
wp plugin update ИМЕ_НА_ПЛЪГИНА

# Всички освен един
wp plugin update --all --exclude=ИМЕ_НА_ПЛЪГИНА

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

След обновление плъгин може да предизвика фатална грешка и админът да не се отваря. От версия 5.2 WordPress праща на имейла на администратора линк за режим на възстановяване, но ако писмото не пристигне или не искате да чакате, WP-CLI е по-бързият път.

Bash
# cPanel > Terminal, в папката на сайта
wp plugin list --status=active
wp plugin deactivate ИМЕ_НА_ПЛЪГИНА

Името е от колоната name и обикновено съвпада с името на папката на плъгина в wp-content/plugins.

Ако WP-CLI спира със същата грешка още преди да изключи плъгина, накарайте го да не зарежда плъгина за тази команда.

Bash
# Когато самият WP-CLI се чупи от плъгина
wp plugin deactivate ИМЕ_НА_ПЛЪГИНА --skip-plugins=ИМЕ_НА_ПЛЪГИНА

--skip-plugins пропуска зареждането само за тази команда. Mu-плъгините се зареждат винаги. Ако проблемът е в темата, --skip-themes прави същото за нея, а wp theme activate ИМЕ_НА_ТЕМАТА сменя активната тема с друга от wp theme list.

Без WP-CLI същото става във File Manager. Документацията на WordPress описва как се преименува папката plugins на plugins.hold, за да се изключат всички плъгини наведнъж. След като влезете в админа, върнете старото име и включвайте плъгините един по един.

Потребители, нов администратор и нова парола

Първата команда само чете и е добра проверка за сигурност. Администратор, когото не познавате, е причина да проверите по-внимателно.

Bash
# cPanel > Terminal, в папката на сайта
wp user list --role=administrator \
  --fields=ID,user_login,user_email,user_registered

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

Bash
# Нов администратор, паролата се показва на екрана
wp user create rezerva info@primer.bg --role=administrator

За нова парола на съществуващ потребител има reset-password. По подразбиране командата праща на потребителя имейл за промяната. С --skip-email не праща имейл, а с --show-password показва новата парола на екрана.

Bash
# Нова парола, показана на екрана
wp user reset-password ИМЕ_НА_ПОТРЕБИТЕЛЯ --show-password

Смяна на адреса в базата със search-replace

Когато сайтът сменя адреса си, например от http към https или от тестов към истински домейн, старият адрес остава на много места в базата. wp search-replace го сменя навсякъде наведнъж. Командата разбира и сериализираните данни, в които е записана дължината на текста и които ръчната замяна поврежда.

Bash
# 1. Дамп на базата, извън папката на сайта
wp db export ~/baza-pred-promyana.sql

# 2. Проба, не променя нищо
wp search-replace 'http://primer.bg' 'https://primer.bg' \
  --skip-columns=guid --dry-run

# 3. Истинската команда, същата без --dry-run
wp search-replace 'http://primer.bg' 'https://primer.bg' \
  --skip-columns=guid

--dry-run прави цялата работа на сухо и показва колко замени би направила командата. --skip-columns=guid пази колоната guid. Документацията на WordPress съветва съдържанието на тази колона никога да не се променя.

Как да откриете променени файлове

Две команди сравняват файловете на сайта с контролните суми на WordPress.org. И двете само четат.

Bash
# cPanel > Terminal, в папката на сайта
wp core verify-checksums
wp plugin verify-checksums --all

Първата проверява файловете на ядрото. Не зарежда WordPress, затова работи и на счупен сайт. При разлика дава предупреждение „File doesn't verify against checksum“ с името на файла, а когато няма разлики, завършва с „Success“.

Втората прави същото за плъгините от каталога на WordPress.org. Плъгин извън каталога, например платен, няма с какво да се сравни и командата го пропуска.

Променен файл не означава непременно заразен сайт. Може да сте го редактирали Вие или обновяването да е спряло по средата. Но променен файл на ядрото, който не сте пипали, е причина да проверите по-внимателно. Скенер като ImunifyAV търси зловреден код, ако хостингът Ви го предлага, а тези две команди са бърза проверка, която пускате Вие.

Ако някой плъгин има променени файлове и не знаете защо, върнете чист вариант от WordPress.org. Командата инсталира последната стабилна версия, така че тя може да е по-нова от текущата.

Bash
# Копие на папката на плъгина, после чиста инсталация
cp -r wp-content/plugins/ИМЕ_НА_ПЛЪГИНА ~/plugin-kopie
wp plugin install ИМЕ_НА_ПЛЪГИНА --force

Cron и кеш

Ако планирана публикация закъснява, това често означава, че WP-Cron не работи. Следващите две команди само четат.

Bash
# cPanel > Terminal, в папката на сайта
wp cron test
wp cron event list

wp cron test проверява дали WP-Cron се стартира както трябва, а wp cron event list показва чакащите събития и кога е следващото изпълнение. Ако нещо чака отдавна, изпълнете събитията, чието време е дошло.

Bash
# Изпълнява събитията, чието време е дошло
wp cron event run --due-now

Три команди чистят кеша на различни нива.

Bash
# Кеш на обектите, изтекли временни записи, правила за връзките
wp cache flush
wp transient delete --expired
wp rewrite flush

wp cache flush изчиства кеша на обектите. На натоварен сайт внимавайте, защото кешът се пълни наново и първите заявки са по-бавни. wp transient delete --expired трие изтеклите временни записи от базата, а wp rewrite flush обновява правилата за постоянните връзки.

Чеклист

  • wp --info работи и знам в коя папка пускам командите.
  • Преди всяка промяна имам пресен дамп на базата, записан извън public_html.
  • Обновленията на плъгини и теми пускам първо с --dry-run.
  • Знам как да изключа плъгин с wp plugin deactivate, ако админът не се отваря.
  • wp search-replace пускам първо с --dry-run и с --skip-columns=guid.
  • Преглеждам администраторите с wp user list --role=administrator.
  • Проверявам файловете с wp core verify-checksums и wp plugin verify-checksums --all.
  • Не пускам wp db reset, wp db clean и wp db drop на сайт, който ми трябва.

Ако не искате да се занимавате с това

Ако имате един сайт и админът му работи, WP-CLI не Ви е нужен. Той е за деня, в който бързате или админът не се отваря.

Ако хостингът Ви няма Terminal, но има WP Toolkit в cPanel, той събира всички сайтове с WordPress на едно място, обновява ги оттам и проверява сигурността им, като Ви уведомява, щом открие риск. Как се ползва, е описано в ръководството за WP Toolkit.

Ако изобщо не искате да пускате команди, месечната поддръжка поема наблюдението, обновленията, уязвимостите и бекъпите на сайта всеки месец, където и да е хостнат.

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

Какво е WP-CLI?

WP-CLI е командният ред на WordPress. С него обновявате ядрото, плъгините и темите, създавате потребители, сменяте адреси в базата и проверявате файлове с една команда, без браузър. Полезен е, когато админът не се отваря или трябва да промените много неща наведнъж.

Как да проверя дали хостингът ми има WP-CLI?

Отворете Terminal в секцията Advanced на cPanel, влезте в папката на сайта, тази с файла wp-config.php, и пуснете wp --info. Ако видите версиите на WP-CLI и PHP, всичко е готово. „command not found“ значи, че WP-CLI не е достъпен на този хостинг, а „This does not seem to be a WordPress installation“ значи, че сте в грешната папка.

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

Командата wp db export прави копие на цялата база в един файл, като взема данните за връзка от wp-config.php и не иска парола. Задайте файл в домашната си папка, а не в public_html, защото файл там може да бъде свален от интернет. Базата се възстановява с wp db import, но импортът връща базата към състоянието на копието и трие всичко, добавено след него, включително поръчки и коментари.

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

В папката на сайта пуснете wp plugin deactivate с името на плъгина от колоната name на wp plugin list. Ако самият WP-CLI спира със същата грешка, добавете --skip-plugins, за да не зарежда плъгина за тази команда. Без WP-CLI същото става в File Manager, като преименувате папката plugins на plugins.hold, което деактивира всички плъгини наведнъж.

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

С wp user create и ролята administrator, а ако не зададете парола, WP-CLI измисля такава и я показва на екрана. За нова парола на съществуващ потребител има wp user reset-password, който по подразбиране праща имейл за промяната. Не пишете паролата в самата команда с --user_pass=, защото тя може да остане в историята на командите.

Как да сменя адреса на сайта в базата с WP-CLI?

С wp search-replace, който сменя стария адрес навсякъде наведнъж и разбира сериализираните данни, които ръчната замяна чупи. Командата няма бутон за връщане, затова първо направете копие с wp db export, после пробвайте с --dry-run. Добавете --skip-columns=guid, защото документацията на WordPress съветва съдържанието на колоната guid никога да не се сменя.

Как да проверя дали файловете на WordPress са променени?

wp core verify-checksums сравнява файловете на ядрото с контролните суми от WordPress.org, а wp plugin verify-checksums --all прави същото за плъгините от каталога. Двете само четат, а платените плъгини извън каталога се пропускат, защото няма с какво да се сравнят. Променен файл не значи непременно заразен сайт, но променен файл на ядрото, който не сте пипали, е причина да погледнете по-внимателно.

Защо планираните публикации в WordPress закъсняват?

Често причината е, че WP-Cron не се стартира. wp cron test проверява дали WP-Cron тръгва както трябва, а wp cron event list показва чакащите събития и кога е следващото пускане. Ако нещо чака отдавна, пуснете дължимите задачи.

Източници

# ЕтикетиcPanel
СподелетеFacebookXLinkedIn