Dneska o WP-CLI. Používá se v linuxovém příkazovém řádku. Než odejdete, přečtěte si, proč byste jako zkušení správci měli tento nástroj aspoň trochu znát a aspoň trochu ovládat.
Obsah
- Co je WP-CLI
- Jak WP-CLI využít?
- Hlavní přínosy
- Pár slov k instalaci a používání
- Vybrané příkazy WP-CLI pro správu WordPressu
Co je WP-CLI
Je to textové rozhraní k WordPressu, které spouštíte a ovládáte na serveru, kam se přihlásíte pomocí SSH. Nelze k němu přistupovat ani přes ftp, pouze s výjimkou v nastavení přes http protokol. Na server ho musí nainstalovat správce serveru, jako uživatel můžete maximálně požádat nebo poslat ostrou prosbu. (Pokud nějaký server máte, asi si poradíte, návod na instalaci je na titulce webu.) Velká část hostingů WP-CLI má, někdy není jen povolený.
Skript je naprogramovaný tak, že jednotlivé funkce jsou distribuovány jako (mini)balíčky , vlastně minipluginy, takže je lze instalovat, mazat, vyhledávat nebo dokonce procházet jejich seznamem (seznam balíčků pro WP-CLI).
Jak WP-CLI využít?
Použijete ho pro provádění úkonů ve WordPressu, do kterého se ale nemusíte (vlastně nemůžete) přihlásit. Tím, že jste na serveru v adresáři WordPressu a jako systémový uživatel máte dostatečná oprávnění, můžete aplikaci ovládat. Nepřihlašujete se do WordPressu, protože většina provedených úkonů se uloží do databáze a tam vám přístup umožní uživatelská práva operačního systému. Například:
- WP-CLI provede úpravy v tabulkách databáze (třeba záměnu řetězců nebo změnu hesla uživatele), protože se do ní dostane – načte konfiguraci uloženou ve wp-config.php.
- WP-CLI spustí PHP, aby zpracoval požadovaný PHP skript. Ten si načte vše potřebné, takže v důsledku jde o stejný požadavek jako přes http. Například analýza spuštěných hooků.
- WP-CLI spravuje soubory na disku, instaluje a aktualizuje pluginy, manipuluje s obrázky, exportuje a importuje data.
To vše využijete v případě:
- záchranných úkonů, kdy se nemůžete dostat do WordPressu, protože vůbec nenaběhne nebo není dostupný přes http,
- časově a datově náročných úkonů, při kterých je grafické prostředí zbytečné a vlastně zdržuje,
- automatizace nebo skriptování – mnoho úkonů můžete provádět skriptem zavěšeným na systémovém cronu.
Hlavní přínosy
- Ne vždy se dostanete do grafického prostředí WordPressu. To ale nevadí, bohatě vám stačí příkazový řádek, i když budete příkazy zadávat podle manuálu a ne zpaměti.
- Je to mnohem rychlejší. Jako fakt, absence grafiky a obrázků není zas takový problém, vidíte jen potřebné informace.
- Zjistíte věci, které přes webovou aplikaci někdy vůbec nezjistíte nebo ne tak snadno a rychle.
- Můžete úkoly naskriptovat a tedy řetězit (např. vytvořit zálohovací skript nebo importovat soubory).
- Mnoho pluginů přidává modul také do WP-CLI, takže funkce můžete ovládat také z příkazové řádky. (Ačkoliv jsem si myslel, že nedávno přidal svůj modul také Wordfence, není tomu tak, používají vlastní distribuční balíček.)
Doufám, že ještě čtete, bo teprve teď si ukážeme některé kulervoucí příklady, které vám trochu zvýší tep.
Pár slov k instalaci a používání
Jak už jsem uvedl, pro používání v linuxovém systému musíte mít dostatečná práva (protože nejde o aplikaci WordPress, ale o přístup k databázi a souborům v systému). Střetávají se tady jako mnohdy jindy dva koncepty:
- buď si v systému vytvoříte (nebo je vytvořena) role, která má potřebná, ale ne všechna práva (třeba nemůže vytvářet databáze), nebo
- vše spouštíte jako root, což znamená, že WordPressy vystavujete riziku kompromitace.
Při prvním úkonu se WP-CLI pořád dožaduje hesla a oprávnění, při druhém máte vše bezstarostně k dispozici, což je rizikové. Život je výzva.
Hlavní příkaz se jmenuje wp, po něm následuje název sekce, pak název akce a další parametry. Příklad: wp core update
nebo wp user list
. Nápověda ke všemu je sekce ‚help‘, název akce pak téma, ke kterému chcete poradit, případně ještě můžete přidat příkaz. Takže wp help core
vypíše příkazy pro správu jádra WordPressu, wp help user
pak ke správě uživatelů, wp help user list
pak nápovědu pro výpis uživatelů (tedy k tomu list
). Všechny sekce jsou v jednotném čísle, pokud jsem si všiml (theme, plugin, user).
POZN. Názvy pluginů koresponduje se slugem, který mají na WordPress.org, tedy v názvu nejsou mezery, ale pomlčky. Tento název je identifikátorem pluginu/šablony pro použití v příkazech.
Nechci tady vypisovat všechny sekce, na to je nápověda WP-CLI, navíc přibývají s tím, jak si instalujete klasické pluginy nebo jen balíčky do WP-CLI. Namátkou známé pluginy, které přidávají své příkazy do WP-CLI: All in One Migration, BackWPUp, Ninja Forms, Query Monitor, Maintenance, Redis Cache, UpDraftPlus, ShortPixel Image Optimizer, Rankmath SEO, WooCommerce a další.
Vybrané příkazy WP-CLI pro správu WordPressu
Opravdu jen ochutnávka příkazů, které používám na lokálních instalacích:
Jádro, pluginy a šablony
wp core update
aktualizuje jádro WordPressu, které si předtím automaticky stáhne do lokální cache, pokud už tam není,wp plugin list
vypíše seznam pluginů, jejich stav (aktivní/neaktivní) a aktuálnost (použitá verze, aktuální verze), podobně takéwp plugin status
; zkuste takéwp plugin list | grep available
pro výpis pouze pluginů, které lze aktualizovat (díky řádkovému výpisu můžete vše grepovat do alelujá),wp theme list
,wp theme status
dělá totéž pro šablony, u rodičovských šablon zobrazuje „P“,wp site list
zobrazuje všechny weby v síti (multisite),wp plugin toggle query-monitor
přepne stav pluginu Query Monitor mezi aktivní-neaktivní,wp user update vlasta --user_pass=noveheslo
mi slouží ke změně hesel na lokále, když je zapomenu,wp cache flush
vyprázdní objektovou cache WordPressu,wp rewrite flush
zase pamět pro trvalé odkazy (když nainstalujete nový plugin, který vytváří vlastní CPT, často zobrazují chybu 404, tohle ji vyřeší),wp plugin auto-updates status --all | grep enabled
vypíše všechny pluginy, u každého z nich, jesti má aktivní automatické updaty, grepem vyfiltrujeme jenom ty, které mají tuto funkci povolenou:
# wp plugin auto-updates status --all | grep enabled
admin-taxonomy-filter enabled
wordfence enabled
Pokud se nepletu, WP-CLI nedokáže vždy rozpoznat, zda má dostupné aktualizace placený (prémiový) doplněk, a to zřejmě kvůli autorizačnímu mechanismu, který není pro WP-CLI dostupný. Vývojáři sice často používají pro distribuci placených pluginů třeba framework Freemius, ale klidně mohou mít vlastní řešení a nemají moc důvod vytvářet podporu pro WP-CLI. Myslete tedy na to, že tyto doplňky je potřeba hlídat ručně.
Ladění, debugování
wp config list
vypíše konfiguraci hodnot ve wp-config.php,wp config set WP_DEBUG true
nastaví konstantu pro ladění,wp cron schedule list
zobrazí plán pro cron tasky, tedy schéma toho, kdy se co spouští, kdežtowp cron event list
zobrazí konkrétní rutiny, které se v daném schématu provádějí a čas jejich minulého a následujícího běhu,wp doctor check autoload-options-size
zjistí, jak velké je množství dat, které se automaticky načítá při každém dotazu do databáze a řádně SQL dotazy zpomaluje,
wp query-debug --url=https://vasrozbityweb.cz/stranka/ --format=table 1>query-debug.log
načte stránku na dané url a vrátí časovou osu, chyby a další informace o tom, co se při načíčřání dělo; výpis je ale dlouhý, proto je dobré ho přesměrovat do souboru (případně přidejte2>errors.log
pro uložení chybového výstupu),wp profile stage --spotlight --url="https://e-ott.info/wordpress/" --format=table
je lepší a přehlednější výpis toho, co se načítá a jak dlouho to trvá.
Úpravy obsahu
V každé sekci je více příkazů, zadejte tedy např. wp help media
, dozvíte se o nich víc.
wp media image-size
vám řekne, jaké rozměry obrázků jsou v instalaci nastavené,wp media regenerate
vytvoří znovu náhledové obrázky, a to buď pro vybrané obrázky, rozměry, nebo pro celou mediální knihovnu,
wp post list
(opět je možnost s příspěvky pracovat v režimu CRUD) vypíše příspěvky webu a hned vás přenesu nawp export --post_type=post
, což tyto příspěvky uloží do XML souboru,wp post-type list
vypíše vlastní typy příspěvků (custom post types) a jejich základní parametry,- podobně
wp taxonomy list
vypíše všechny registrované taxonomie příspěvků awp role list
všechny existující uživatelské role.
wp export --post_type=nav_menu_item
vyexportuje nabídky,wp scaffold plugin jezevec
vytvoří strukturu pluginu awp scaffold post-type jezevec > cpt.php
do něj přidá soubor s CPT jménem ‚jezevec‘ (další možné parametry zde vůbec neuvádím),
wp comment list --number=10 --fields=comment_date,post_title --user_id=3
zobrazí posledních deset komentářů uživatele s ID 3, tabulka obsahuje sloupec s datem komentáře a s názvem komentovaného příspěvku (do fields můžete přidat obsah komentáře nebo odebrat user_id pro komentáře všech autorů)
Já myslím, že je čas končit, beztak vám drnčí v hlavě, žejo. Ty možnosti jsou bezbřehé, je to jedno velké lego. Zobrazit a poskládat lze skoro cokoliv.
Tak hezké hraní. 🙂 (Vůbec jsem nezmínil nic o WooCommerce, tak třeba jindy.)