WP-CLI

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

  1. Co je WP-CLI
  2. Jak WP-CLI využít?
  3. Hlavní přínosy
  4. Pár slov k instalaci a používání
  5. 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 updatenebo 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 listwp 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
Seznam pluginů
Seznam pluginů

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žto wp 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,
Kontrola doktora WordPressu
Kontrola doktora WordPressu
  • 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řidejte 2>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á.
Profiling načtení jedné url
Profiling načtení jedné url

Ú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,
Velikosti obrázků
Velikosti obrázků
  • 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 na  wp 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ů a wp 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 a wp 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),
Vygenerování kostry pluginu
Vygenerování kostry pluginu
  • 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.)

Napsat komentář

Newsletter Rádce pro správce

Každou středu rozesíláme část svého know-how, které jsme pracně získali během posledních let. Zadarmo každému, kdo má zájem stát se zkušeným správcem WordPressu. Není určený našim zákazníkům, nýbrž našim kolegům v oboru. Vracíme tak komunitě to, co jsme získali od jiných. Podívejte se do jeho archivu.