Bedrock, aneb WordPress přes Composer

Pokud vám přijde WordPress z programátorského hlediska zastaralý, tak máte pravdu. Ale nemusíte zoufat. Jednou z možností, jak tuto situaci změnit k lepšímu, je instalace a aktualizace WordPressu přes Composer díky projektu Bedrock od skupiny Roots.io. Ovšem je třeba zvážit výhody i nevýhody. Dlužno podotknout, že se jedná o cestu pro zkušenější programátory.

Nejprve se podíváme na trochu teorie a vysvětlení jednotlivých pojmů. Kdo zná, může přeskočit…

Pozn.: tento příspěvek je shrnutí mých vystoupení na WordCampu Praha a Bratislava 2017 právě na toto téma…

Composer

Composer je vývojářský nástroj pro správu závislostí v PHP. Slouží programátorům k instalaci a aktualizaci knihoven včetně jejich závislostí na základě definice v JSON souboru. Používá se z příkazové řádky. Stačí ho nainstalovat do vašeho operačního systému dle nainstalovaného/používaného PHP. Funguje na MacOS, Linux i Windows.

Dalo by se říci, že pro základní použití stačí pouze tři příkazy:

  • composer install,
  • composer update,
  • composer require,

které provedou instalaci, resp. aktualizaci definovaných knihoven dle souboru composer.json, resp. doplnění nové závislosti.

(WP)Packagist

Packagist je online repositář knihoven pro Composer. WP Packagist je obdoba ve světě WordPressu, ve které jsou zrcadleny pluginy a šablony pro použití přes Composer. Pro umístění vlastní knihovny si zde založte účet a nasměrujte na svůj veřejný repositář. Ten je vhodné mít na GitHubu a propojit s automatickou aktualizací. Jinak musíte aktualizaci provádět ručně a tím pádem dělat zdvojenou činnost.

Pozor ovšem na názvy. WP Packagist pracuje s „klíči“ (rozuměj slugy) pluginů i šablon. Takže např. plugin „Yoast SEO“ je dostupný pod klíčem „wordpress-seo„. Je to způsobeno přejmenováním pluginu v průběhu jeho existence. Celý příkaz pro doplnění pluginu pak bude: $ composer require „wpackagist-plugin/wordpress-seo“, přičemž část „wpackagist-plugin/“ určuje namespace pluginů. Obdobně je to i se šablonami.

Bedrock

Standard pro definici WordPressu s moderními vývojovými nástroji, jednoduchou konfigurací a vylepšenou adresářovou strukturou.“ 

Bedrock je velice zajímavý projekt pro změnu programátorského přístupu a práce s WordPressem. Přináší funkční koncept, jak i ve WordPressu používat Composer pro instalaci a aktualizaci nejen pluginů a šablon, ale i libovolných dalších PHP knihoven.

Výhody

  • Lepší (adresářová) struktura projektu (podobná moderním frameworkům, např. adresář app)
  • Správa závislostí pomocí Composeru:
    $ composer require „wpackagist-plugin/wp-tracy“ –dev
  • Snadná konfigurace – pomocí Dotenv souborů různá prostředí: development, staging, production
  • Zvýšená bezpečnost, např. plugin wp-password-bcrypt

Požadavky

Abyste mohli Bedrock používat, musíte mít prostředí vhodné pro WordPress a navíc:

  • PHP >= 5.6
  • Composer

Instalace

Rozchození Bedrocku je velmi jednoduché, stačí k tomu v základu jen 4-5 kroků:

  1. Vytvoření nového projektu:$ composer create-project roots/bedrock
  2. .env.example → .env + aktualizace systémových proměnných
  3. Přidání šablony do web/app/themes
  4. Nastavení vhost: /path/to/site/web/
  5. Přístup do administrace: http://example.com/wp/wp-admin

Nevýhody

  • Vůči WordPressu má jinou adresářovaou strukturu, což by mohl být problém pro:
    • nekompatibilní pluginy
    • špatně napsané šablony
  • Použitím Bedrocku vzniká další závislost na třetí straně: Roots.io
  • Aktualizace by měly probíhat ideálně pouze přes Composer (z principu). Nicméně fungují i uživatelské aktualizace přímo z WP. Pak ovšem „zdvojujete“ možné umístění souborů.

Kdy použít?

Byť se mi osobně Bedrock velmi líbí, tak jeho reálné využití v praxi vidím omezeně. Osobně bych ho použil především na osobní projekty. A před případným uvedením pro ostrého provozu doporučuji důkladné vyzkoušení.

Další možnosti použití bych viděl pokud:

  • potřebuje (další) závislosti přes Composer
  • nejste závislí na velkém počtu pluginů
  • máte celý projekt pod kontrolou
  • máte s klientem servisní spolupráci

Kdy nepoužít?

Rozhodně bych nedoporučil používat Bedrock okamžitě a všude. Jedná se o alternativní způsob definice WordPressu, pro který je třeba mít pádný důvod. Proto bych ho nepoužil na projekty klientů bez plné důvěry.

Další možnosti nepoužití bych viděl obdobně pokud:

  • jste závislý na velkém počtu pluginů
  • nemáte svojí kvalitní šablonu
  • nemáte celý projekt pod kontrolou
  • nemáte s klientem servisní smlouvu

Co z toho vyplývá?

Bedrock je za mě osobně zajímavý projekt, který se jednoznačně vyplatí vyzkoušet a pokud v něm najdete zalíbení, či opodstatnění. Do světa WordPressu přináší svěží vítr a ukázku toho, jak by to snad jednou v budoucnu mohlo vypadat standardně. Podle mého názoru by si měl každý dobrý WP programátor provést, vyzkoušet a pochopit zkušební instalaci Bedrocku. Bohužel ale v praxi jeho využití vidím velmi obtížně. Především kvůli velkému odstupu od jednoduché filozofie WordPressu jako takového. Minimálně jako „průkopník“ má ale přínos.