Lekce 3 - Struktura pluginu a vytvoření složky
V minulé lekci, Instalace WordPress a prvotní nastavení, jsme si nainstalovali WordPress a udělali prvotní nastavení.
V tomto tutoriálu tvorby pluginů pro redakční systém WordPress se budeme věnovat základním krokům, které musíme udělat, abychom mohli vytvořit svůj první plugin. Než se ponoříme do kódu, projdeme si strukturu adresářů a vytvoříme si pro náš budoucí první plugin složku. Dozvíme se také základní fakta k zabezpečení pluginů proti útoku zvenčí.
Stromová struktura pluginu
Podívejme se, jak bude vypadat stromová struktura složek a souborů pro náš první plugin, který dnes společně vytvoříme:
wp-content/ │ └── plugins/ │ └── prvni-plugin/ │ ├── prvni-plugin.php │ └── index.php
prvni-plugin/
- hlavní složka našeho pluginu, pojmenovaná podle názvu našeho projektu,prvni-plugin.php
- soubor obsahuje klíčové informace o pluginu a slouží k jeho identifikaci a správě. Popisuje, co plugin dělá a jaké má vlastnosti,index.php
- prázdný soubor sloužící ke zvýšení bezpečnosti pluginu. Pokud někdo získá přístup k adresáři pluginu, bude přesměrován na tento prázdný soubor, čímž ochráníme náš plugin před neoprávněným přístupem.
Vytvoření složky pro plugin
Přejdeme do složky
tvorbapluginu\app\public\wp-content\plugins/
. Jak vyplývá z
naší stromové struktury, v této složce vytvoříme složku pro náš první
plugin. Pojmenujeme si ji prvni-plugin/
. Jediná podmínka pro
název pluginu je, aby byl jeho název jedinečný a nekolidoval s již
existujícím pluginem. My nicméně zatím budeme používat lokální server,
a tak se názvem zatím nemusíme tolik zabývat. Na webovém úložišti pak
lze provést kontrolu, zda názvy nekolidují.
Vytvoření základního souboru pro plugin
Nyní přejdeme k vytvoření základního souboru pro náš plugin. Tento
soubor bude obsahovat základní informace o pluginu a slouží k jeho
identifikaci a správě. Ve VS Code si otevřeme naši vytvořenou složku
tvorbapluginu/
a přesuneme se do podsložky
prvni-plugin/
. V ní vytvoříme soubor
prvni-plugin.php
:
Do souboru prvni-plugin.php
napíšeme následující metadata
pluginu:
<?php /** * @package Prvniplugin */ /* Plugin Name: Prvni plugin Plugin URI: http://prvni-plugin.com Description: Toto je můj první WordPress plugin. Version: 1.0.0 Author: Vaše Jméno Author URI: http://vase-url.com License: GPLv2 or later Text Domain: prvni-plugin */
Popišme si nyní jednotlivé položky:
Plugin Name
- zde zadáme název našeho pluginu, který se zobrazí v administrátorském rozhraní WordPressu,Plugin URI
- pokud máme webovou stránku pro náš plugin, sem zadáme odkaz,Description
- stručný popis funkce a schopností pluginu,Version
- verze pluginu,Author
- jméno autora,Author URI
- webová stránka autora,License
- licence pluginu (např. GPLv2 nebo pozdější),Text Domain
- textová doména pro překlady pluginu.
Pokud nemáme žádnou webovou stránku pluginu, nemusíme ji uvádět. Totéž platí i o našich webových stránkách. Pokud je nemáme, adresu psát nemusíme.
Díky metadatům, která jsme si právě popsali, WordPress identifikuje a spravuje náš plugin. Pokud bychom metadata vynechali, WordPress by nezobrazil ani náš plugin. Proto je nutné je vždy uvést.
Bezpečnostní opatření
Pro zvýšení bezpečnosti pluginu vytvoříme prázdný soubor
index.php
v kořenovém adresáři našeho pluginu. Do souboru
napíšeme jen komentář. Pokud by totiž někdo získal přímý přístup k
adresáři pluginu, bude přesměrován na tento prázdný soubor. Tím
ochráníme náš plugin před neoprávněným
přístupem:
<?php // Silence is golden.
I když se může zdát, že prázdný soubor index.php
neobsahuje žádný kód, vytváří důležitou bezpečnostní vrstvu pro náš
plugin. Toto opatření se používá k prevenci různých útoků, jako jsou
pokus o získání citlivých informací o našem pluginu nebo pokus o
spuštění.
Kód souboru se skládá jen z komentáře
// Silence is golden.
. Je důležité si uvědomit, že tento
komentář je spíše konvencí než nutným pravidlem. Přesto je vhodné tuto
konvenci dodržovat hned z několika důvodů:
- Dokumentace - Pomáhá dokumentovat účel souboru. Kódy mnohdy obsahují komentáře, aby vysvětlily, co daný kód dělá. I když je soubor prázdný, tento komentář naznačuje, že jde o záměrně prázdný soubor, jehož jediným účelem je bránit přístupu.
- Lepší čitelnost kódu - Tento komentář také pomáhá čtenářům kódu (včetně vývojářů) rozumět účelu souboru. I když je v tomto případě účel docela zřejmý, takové komentáře jsou velmi užitečné v komplexnějších projektech.
- Tradice - Fráze "Silence is golden" je známým idiomem, který zdůrazňuje výhody ticha a klidu. Ve světě programování by se "ticho" mohlo interpretovat ve smyslu neposkytování informací o obsahu adresáře. Je to taková kódová narážka na tuto tradici.
Pamatujme, že toto opatření je pouze jedním z kroků k zajištění bezpečnosti našeho pluginu. Existují další bezpečnostní postupy a praktiky, které můžeme uplatnit k ochraně svého pluginu. Zaměříme se na ně později v kurzu. Bezpečnost by ale měla být při tvorbě pluginů pro WordPress vždy na prvním místě.
Máme první plugin
Spustíme si vývojové prostředí Local WP, otevřeme naši local site tvorbapluginu a přejdeme do její administrace (tlačítko WP Admin). V prohlížeči se nám na lokálním serveru otevře stránka s administrací. V záložce Plugins uvidíme námi vytvořený plugin:
Vidíme zde všechny údaje, které jsme zadali. Pokud teď v editoru kódu
některou z informací v souboru prvni-plugin.php
upravíme a
úpravy uložíme, po aktualizaci se změny ihned projeví i na stránce
administrace. V rámci administrace lze plugin také aktivovat a deaktivovat,
případně smazat.
V další lekci, První stránka a plugin, se naučíme napsat jednoduchý plugin a necháme si ho vypsat na naší stránku. A řekneme si něco o mechanismu hooků.