Udržitelnost WordPress webu Petr Hlavička hlavicka.cz
Obsah Prémiové šablony a pluginy Struktura Nástroje Verzování Deployment Testování Dokumentace Petr Hlavička: Udržitelnost WordPress webu 2/58
Co pro mě znamená, že je projekt udržitelný? Petr Hlavička: Udržitelnost WordPress webu - Úvod 4/58
Cíl přednášky. Petr Hlavička: Udržitelnost WordPress webu - Úvod 5/58
Proč je dobré tu udržitelnost řešit? Petr Hlavička: Udržitelnost WordPress webu - Úvod 6/58
Myslet dopředu. Petr Hlavička: Udržitelnost WordPress webu - Úvod 7/58
Jaké problémy vidím s premiovými šablonami? aktualizace co maj "pod kapotou"? uzamčení obsahu (theme/plugin lock-in) Petr Hlavička: Udržitelnost WordPress webu - Prémiové šablony a pluginy 8/58
Nad čím se zamyslet při výběru pluginu? Opravdu je potřeba? Jak kri4cký bude pro web? Jaká je podpora? Vývoj? Je bezpečný? (WPScan Vulnerability Database) Petr Hlavička: Udržitelnost WordPress webu - Prémiové šablony a pluginy 9/58
Shrnu& Nemáte kontrolu nad vývojem šablony / pluginu. závislos= kontrola udržitelnější. závislos= čas dražší. Petr Hlavička: Udržitelnost WordPress webu - Prémiové šablony a pluginy 10/58
Webové frameworky Struktura Nástroje Verzování Deployment (CI/CD) Testování Dokumentace Petr Hlavička: Udržitelnost WordPress webu - Webové frameworky 11/58
Struktura WordPressu site/ index.php license.txt readme.html wp-activate.php wp-admin/ wp-blog-header.php wp-comments-post.php wp-config.php wp-config-sample.php wp-content/ themes/ languages/ plugins/ wp-cron.php wp-includes/ wp-links-opml.php wp-load.php wp-login.php wp-mail.php wp-settings.php wp-signup.php wp-trackback.php xmlrpc.php Petr Hlavička: Udržitelnost WordPress webu - Struktura 12/58
Struktura WordPressu site/ index.php license.txt readme.html wp-activate.php wp-admin/ wp-blog-header.php wp-comments-post.php wp-config.php wp-config-sample.php wp-content/ themes/ languages/ plugins/ wp-cron.php wp-includes/ wp-links-opml.php wp-load.php wp-login.php wp-mail.php wp-settings.php wp-signup.php wp-trackback.php xmlrpc.php Petr Hlavička: Udržitelnost WordPress webu - Struktura 13/58
Struktura WordPress šablony Petr Hlavička: Udržitelnost WordPress webu - Struktura 14/58
Struktura WordPress šablony Proč to řešit? Povinné soubory šablony: index.php style.css Petr Hlavička: Udržitelnost WordPress webu - Struktura 15/58
Struktura WordPress šablony Jaké máme možnos-? Oficiální (doporučená) 1 Použi7 WordPress frameworku Vlastní 1 Organizing Theme Files WordPress Developer Resources Petr Hlavička: Udržitelnost WordPress webu - Struktura 16/58
Oficiální (doporučená) theme/ 404.php archive.php assets/ comments.php footer.php front-page.php functions.php header.php inc/ index.php page.php README.txt rtl.css screenshot.png search.php searchform.php sidebar.php single.php style.css template-parts/ Petr Hlavička: Udržitelnost WordPress webu - Struktura 17/58
Oficiální (doporučená) theme/ 404.php archive.php assets/ comments.php footer.php front-page.php functions.php header.php inc/ index.php page.php README.txt rtl.css screenshot.png search.php searchform.php sidebar.php single.php style.css template-parts/ Petr Hlavička: Udržitelnost WordPress webu - Struktura 18/58
Použi& WordPress frameworku Usnadnění vývoje. Možný odklon od standardního vývoje šablon. Další závislost v projektu. Hotová dokumentace. Petr Hlavička: Udržitelnost WordPress webu - Struktura 19/58
Ukázka struktury Assely theme/ app bootstrap composer.json composer.lock config functions.php gulpfile.js index.php package.json public README.md resources screenshot.png storage style.css vendor Petr Hlavička: Udržitelnost WordPress webu - Struktura 20/58
Ukázka struktury Assely theme/ app bootstrap composer.json composer.lock config functions.php gulpfile.js index.php package.json public README.md resources screenshot.png storage style.css vendor Petr Hlavička: Udržitelnost WordPress webu - Struktura 21/58
Použi& WordPress frameworku Doporučení Druh implementace. Zvážit omezení, které mají. Vývoj a podpora frameworku. Vyzkoušet! Petr Hlavička: Udržitelnost WordPress webu - Struktura 22/58
Nelíbí se ani jedna z variant? 23/58
Vlastní struktura Doporučení Samostatný git repozitář. S dokumentací. Nechte se inspirovat. Myslet dopředu. Petr Hlavička: Udržitelnost WordPress webu - Struktura 24/58
Struktura WordPress pluginu Princip stejný jako u šablon. Kde se inspirovat: WordPress Plugin Boilerplate a s =m spojený Plugin Directory Boilerplate. Frameworky: WordPress Plugin Framework, Herbert, WordPress Plugin Template. Petr Hlavička: Udržitelnost WordPress webu - Struktura 25/58
Struktura souborů je pouze základ Standardizovat si kód Vlastní standardy Cizí standardy např. WordPress Coding Standards + kontrola (WordPress Coding Standards for PHP_CodeSniffer) Standardizovat si nastavení editoru Soubor.editorconfig (editorconfig.org) Petr Hlavička: Udržitelnost WordPress webu - Struktura 26/58
Je vhodné předem informovat klienta o nestandardních komponentách projektu. Petr Hlavička: Udržitelnost WordPress webu - Struktura 27/58
Nástroje WP-CLI GenerateWP Plugin Developer + jim doporučené pluginy Případné nástroje frameworků. Petr Hlavička: Udržitelnost WordPress webu - Nástroje 28/58
Lokální vývojové prostředí přímo hotové řešení WPLib Box, Local (bývalý Pressma>c) či Trellis pro Bedrock. Vagrant VCCW Docker Local WordPress Development with Docker: 3 Easy Steps & Using wp-cli with Docker Petr Hlavička: Udržitelnost WordPress webu - Nástroje 29/58
Offline dokumentace Dash - macos, ios Zeal - Windows, Linux Velocity - Windows Petr Hlavička: Udržitelnost WordPress webu - Nástroje 30/58
Verzování Nic 2x Jen svoji práci Vše kri5cké Petr Hlavička: Udržitelnost WordPress webu - Verzování 31/58
Jaké jsou možnos-? Git submoduly Composer VersionPress Petr Hlavička: Udržitelnost WordPress webu - Verzování 32/58
Git submoduly Propojování git repositářů. WordPress na GitHub WP Plugins na GitHub Petr Hlavička: Udržitelnost WordPress webu - Verzování 33/58
Git submoduly Ukázka struktury site/ index.php wp-config.php wp-content/ plugins/ wordpress-seo/ # Plugin jako submodul themes/ theme/ # Vlastní šablona wp-cli.yml # Info pro WP-CLI, kde je WP wp/ # WordPress jako submodul Petr Hlavička: Udržitelnost WordPress webu - Verzování 34/58
Git submoduly Co se výsledně verzuje site/ index.php wp-config.php wp-content/ plugins/ wordpress-seo/ # Plugin jako submodul themes/ theme/ # Vlastní šablona wp-cli.yml # Info pro WP-CLI, kde je WP wp/ # WordPress jako submodul Petr Hlavička: Udržitelnost WordPress webu - Verzování 35/58
Git submoduly Výhody Jen důležité. Verze WP a pluginů. Žádný další nástroj. Jednoduchý deployment pomocí Git-Ep. Petr Hlavička: Udržitelnost WordPress webu - Verzování 36/58
Git submoduly Nevýhody Náročnější správa verzí WP a pluginů. Nelze aktualizovat pluginy a ani WP z admina či WP-CLI. Klade vyšší nároky na znalost gitu. Petr Hlavička: Udržitelnost WordPress webu - Verzování 37/58
Composer Balíčkovací systém pro PHP. Možné díky WordPress Packagist - WordPress sám o sobě nepodporuje Composer 2. Využívá např. Bedrock, WP Starter a další. 2 #23912 (Add Composer package descrip6on) WordPress Trac Petr Hlavička: Udržitelnost WordPress webu - Verzování 38/58
Composer Ukázka: instalace Bedrocku 1. composer create-project roots/bedrock 2. Nastavení DB, WP Salt a další v souboru.env. 3. Hotovo. Petr Hlavička: Udržitelnost WordPress webu - Verzování 39/58
Composer Práce s Composerem Instalace pluginu: composer require wpackagist-plugin/wordpress-seo Aktualizace WP a pluginů: composer update Petr Hlavička: Udržitelnost WordPress webu - Verzování 40/58
Ukázka struktury Bedrocku site/ config/ environments/ development.php staging.php production.php application.php # Primary wp-config.php vendor/ # Composer dependencies web/ # Virtual host document root app/ # WordPress content directory mu-plugins/ plugins/ themes/ uploads/ wp/ # WordPress core Petr Hlavička: Udržitelnost WordPress webu - Verzování 41/58
Composer Výhody composer.json Petr Hlavička: Udržitelnost WordPress webu - Verzování 42/58
Composer Nevýhody Nutný deployment. Vyšší požadavky na hos9ng. Nelze aktualizovat pluginy a ani WP z admina či WP-CLI. Petr Hlavička: Udržitelnost WordPress webu - Verzování 43/58
VersionPress Trochu jiné verzování, než předchozí varianty. Stále ve vývoji. Petr Hlavička: Udržitelnost WordPress webu - Verzování 44/58
Další možnost.gitignore 3 Zakázání verzování všeho kromě vlastní šablony a podpůrných souborů. Neverzuje se verze WP a pluginů. WP-CLI, aktualizace přímo, jednoduchý deployment. 3 WordPress.gi-gnore Petr Hlavička: Udržitelnost WordPress webu - Verzování 45/58
Zamyšlení: WP-CLI pro správu verzí WP a pluginů? wp-cli.json wp plugin install wordpress-seo, wp plugin update --all, wp core update,... nové příkazy wp install, wp update tak kdyby se někdo nudil... Petr Hlavička: Udržitelnost WordPress webu - Verzování 46/58
Možnos& verzování databáze DBV - webové rozhraní, umí vytvářet migrace MMP - CLI, umí vytvářet migrace DBVC - CLI, neumí vytvářet migrace VersionPress - pro podporované pluginy Petr Hlavička: Udržitelnost WordPress webu - Verzování 47/58
Deployment Development -> Staging -> Produc7on. Součást CI 4 /CD 5. Automa7cky. 4 Con&nuous integra&on 5 Con&nuous delivery Petr Hlavička: Udržitelnost WordPress webu - Deployment 48/58
Deployment Jak si vybrat? Dle požadavků Dle rozpočtu Dle preferencí Petr Hlavička: Udržitelnost WordPress webu - Deployment 49/58
Deployment Obecné požadavky Specifickou strukturu (pro služby nebo nástroje pro WP) Repositáře na GitLab/GitHub (pro automabcký deploy) FTP nebo nejlépe VPS Petr Hlavička: Udržitelnost WordPress webu - Deployment 50/58
Deployment: Nástroje Jednoduché (nízkonákladové): Git-:p - development -> produc?on Git na hos?ngu (některé sdílené mají podporu gitu) - vlastní řešení (git pull) nebo VersionPress plugin Nástroje pro WP (nutný SSH přístup a další u?lity na straně serveru): wp-deploy - Capistrano Evolu?on WordPress - Vagrant, Ansible, Capistrano WP Stack - Capistrano Wordmove - Ruby Gem pro development <=> produc?on DebOps for WordPress - Python, Ansible, DebOps bedrock-capistrano - Capistrano pro Bedrock Trellis - Vagrant, Ansible pro Bedrock Petr Hlavička: Udržitelnost WordPress webu - Deployment 51/58
Deployment: Služby Univerzální služby: DeployBot DeployHQ WP služby: Pantheon WP Engine VersionPress.com Presslabs, GiFum Flywheel Petr Hlavička: Udržitelnost WordPress webu - Deployment 52/58
Deployment: Zajímavé Deploy pouze šablony či pluginu WP Pusher GitHub Updater Petr Hlavička: Udržitelnost WordPress webu - Deployment 53/58
Testování Plugin Unit Tests - PHPUnit, WP-CLI Codecep9on pro WP - přes Composer, Integra9on Tests, WordPress Func9onal Tests, Acceptance Tests, BDD Zajímavé odkazy: WP Test - kolekce dat pro testování WP Unit Tes9ng WordPress Plugins with PHPUnit Introduc9on to WordPress Unit Tes9ng Petr Hlavička: Udržitelnost WordPress webu - Testování 54/58
Dokumentace Rychlejší orientace v projektu. Stručně. Jasně. Wiki u GitLab/GitHub. Dokumentovat i kód (PHP DocumentaHon Standards). Petr Hlavička: Udržitelnost WordPress webu - Dokumentace 55/58
Shrnu& Petr Hlavička: Udržitelnost WordPress webu 56/58
Dotazy? Petr Hlavička: Udržitelnost WordPress webu 57/58
Prezentace bude dostupná na GitHubu. Sledujte @WordCampPraha na Twi?eru. Děkuji za pozornost. Petr Hlavička hlavicka.cz Petr Hlavička: Udržitelnost WordPress webu 58/58