Gutenberg Vše, co potřebujete vědět o WordPress 'Poslední Editor
Gutenberg je nový editor pro WordPress, který bude zcela nahradit aktuální TinyMCE-poháněl editor. Jedná se o ambiciózní projekt, který pravděpodobně změní WordPress v mnoha ohledech a ovlivní jak běžné koncové uživatele, tak vývojáře, konkrétně ty, kteří jsou závislí na obrazovce editoru pro práci na WordPressu. Zde je, jak to vypadá.
Gutenberg také zavádí nové paradigma ve WordPressu “Blok”.
“Blok” je abstraktní termín používaný k popisu jednotky značek které jsou tvořeny obsahem nebo rozvržením webové stránky. Myšlenka kombinuje koncepty toho, čeho dnes ve WordPressu dosáhneme zkrácené kódy, vlastní HTML a vložit zjišťování do jednoho konzistentního API a zkušeností uživatelů.
Nastavení projektu
S vědomím skutečnosti, že Gutenberg je postaven na vrcholu React, se někteří vývojáři obávají, že bariéra je příliš vysoká pro základní vývojáře pro vývoj Gutenbergu.
Nastavení programu React.js by mohlo být časově náročné a matoucí, pokud s ním právě začínáte. Budete potřebovat alespoň JSX transformátor, Babel, v závislosti na vašem kódu budete potřebovat nějaké Babel pluginy a Bundler jako Webpack, Rollup nebo Parcel.
naštěstí, někteří lidé v komunitě WordPress posílili a snaží se, aby rozvoj Gutenbergu byl co nejjednodušší, aby ho všichni mohli sledovat. Dnes máme nástroj, který bude generovat Gutenbergovu desku můžeme začít psát kód hned namísto toho, aby se hnaly s nástroji a konfiguracemi.
Vytvořte Gutenův blok
create-guten-block
je iniciačním projektem Ahmada Awaisa. To je sada nástrojů s nulovou konfigurací (# 0CJS
), který vám umožní vyvinout blok Gutenberg s některými moderními zásobníky, včetně React, Webpack, ESNext, Babel, ESLint a Sass. Postupujte podle instrukcí a začněte s Create Guten Block.
Použití ES5 (ECMAScript 5)
Použití všech těchto nástrojů k vytvoření jednoduchého “Ahoj světe” může zdát příliš mnoho. Pokud chcete, aby se vaše zásobníky štíhlé, můžete skutečně vytvořit blok Gutenberg pomocí prostého dobrého ol 'ECMAScript 5, které jste již možná obeznámeni s. Pokud máte WP-CLI 1.5.0 nainstalován na vašem počítači, můžete jednoduše spustit ...
wp lešení blok[--title = ] [--dashicon = ] [- kategorie = ] [--theme] [--plugin = ] [--platnost]
… Až vygenerujte Gutenbergův blok kotle k vašemu pluginu nebo tématu. Tento přístup je rozumnější, zejména pro existující pluginy a témata, která jste vyvinuli před Gutenbergovou érou.
Namísto vytvoření nového pluginu, který by vyhovoval blokům Gutenberg, budete možná chtít integrovat bloky do pluginů nebo témat. A aby tento návod snadno sledoval každý, budeme používat ECMAScript 5 s WP-CLI.
Registrace nového bloku
Gutenberg je v současné době vyvíjen jako plugin a bude sloučen do WordPress 5.0 vždy, když se tým bude cítit připraven. Takže, prozatím budete muset nainstalovat z Stránka pluginů v jazyce wp-admin
. Po instalaci a aktivaci spusťte v terminálu nebo v příkazovém řádku následující příkaz, pokud používáte počítač se systémem Windows.
wp scaffold blok série --title = "HTML5 Series" - téma
Tento příkaz vygeneruje blok k aktuálně aktivnímu tématu. Náš blok bude sestávat z následujících souborů:
. A¢AA?¢AA?¢Â ?? série âA?¢AA?¢AA?¢Â ?? block.js âA?¢AA?¢AA?¢Â ?? editor.css âA?¢AA?¢AA?¢Â ?? style.css âAA?¢AA?¢Â ?? series.php
Načíst hlavní soubor našich bloků v functions.php
našeho tématu:
if (function_exists ('register_block_type')) vyžadují get_template_directory (). '/blocks/series.php';
Všimněte si, že vkládáme soubor s podmínkou. To zajišťuje kompatibilita s předchozí verzí WordPressu, že náš blok je načten pouze při Gutenbergu. Náš blok by měl být nyní k dispozici v rámci rozhraní Gutenberg.
To, jak to vypadá, když vložíme blok.
Gutenberg API
Gutenberg zavádí dvě sady API pro registraci nového bloku. Když se podíváme na series.php
, najdeme následující kód, který registruje náš nový blok. To také načte předlohu a JavaScript na úvodní stránku a editor.
register_block_type ('twentyseventeen / series', pole ('editor_script' => 'series-block-editor', 'editor_style' => 'seriál-editor-editor', 'styl' => 'blok bloku'));
Jak je vidět výše, náš blok je pojmenován twentyseventeen / series
, Název bloku musí být jedinečný a jmenný, aby nedošlo ke kolizi s ostatními bloky, které přinášejí ostatní pluginy.
Dále, Gutenberg poskytuje sadu nových JavaScript API pro interakci s “Blok” rozhraní v editoru. Vzhledem k tomu, že API je poměrně hojné, budeme se zaměřovat na některá specifika, o kterých si myslím, že byste měli vědět, abyste získali jednoduchý, ale funkční Gutenbergův blok..
wp.blocks.registerBlockType
Nejprve se podíváme do wp.blocks.registerBlockType
. Tato funkce se používá zaregistrovat nový “Blok” redakci Gutenbergu. Vyžaduje dva argumenty. První argument je název bloku, který by měl následovat název registrovaný v register_block_type
funkce na straně PHP. Druhým argumentem je Objekt definující vlastnosti bloku rozhraní, jako je název, kategorie a několik funkcí.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType ('twentyseventeen / series', title: __ ('HTML5 Series'), kategorie: 'widgety', klíčová slova: ['html'], edit: function (props) , save: function (props) );
wp.element.createElement
Tato funkce umožňuje vytvořit prvek uvnitř “Blok” v editoru příspěvků. wp.element.createElement
funkce je v podstatě abstrakce React createElement ()
funkce tak přijímá stejný soubor argumentů. První argument vezme typ prvku, například odstavec, a rozpětí
, nebo div
Jak je ukázáno níže:
wp.element.createElement ('div');
Můžeme alias funkce do proměnné tak je kratší psát. Například:
var el = wp.element.createElement; el ('div');
jestli ty preferují použití nové syntaxe ES6, můžete to také udělat takto:
const createElement: el = wp.element; el ('div');
Můžeme také přidat atributy elementu Jako třída
jméno nebo id
na druhém parametru následovně:
var el = wp.element.createElement; el ('div', 'class': 'serie-html5', 'id': 'série-html-post-id-001');
div
bez obsahu by to nedávalo smysl. Můžeme přidejte obsah do argumentu třetího parametru:
var el = wp.element.createElement; el ('p', '' '' ':' serie-html5 ',' id ':' serie-html-post-id-001 ',' Tento článek je součástí našeho "HTML5 / CSS3 Tutorials series" - vyhrazeno vám pomůže lépe navrhnout a / nebo vytvořit vývojáře Klikněte zde pro více článků ze stejné série ');
wp.components
wp.components
obsahovat sbírku, jak jméno napovídá, Gutenberg komponenty. Tyto komponenty jsou technicky React vlastní komponenty, které zahrnují Button, Popover, Spinner, Tooltip, a spoustu dalších. Můžeme znovu použít tyto komponenty do vlastního bloku. V následujícím příkladu přidáme komponentu tlačítka.
var Button = wp.components.Button; el (Tlačítko, 'class': 'tlačítko ke stažení',, 'Download');
Atributy
Atributy jsou způsob, jak ukládat data do našeho bloku, tato data mohou být jako obsah, barvy, zarovnání, adresa URL, atd. Můžeme získat atributy z vlastností předaných na Upravit()
funkce:
edit: function (props) var content = props.attributes.seriesContent; return el ('div', '' class ':' serie-html5 ',' id ':' série-html-post-id-001 ', obsah);
Pro aktualizaci atributů používáme setAttributes ()
funkce. Typicky bychom změnili obsah určitých akcí, jako je například klepnutí na tlačítko, vyplnění vstupu, volba je vybrána, atd. V následujícím příkladu jej použijeme k přidání ustoupit obsahu našeho bloku v případě, že by se něco stalo našemu sérieObsah
Atribut.
edit: function (props) if (typeof props.attributes.seriesContent === 'undefined' ||! props.attributes.seriesContent) props.setAttribute (seriesContent: 'Hello World! Zde je nouzový obsah.' ) var content = props.attributes.seriesContent; return [el ('div', '' class ':' serie-html5 ',' id ':' série-html-post-id-001 ', obsah),];
Uložení bloku
Uložit()
funkce funguje podobně jako Upravit()
, kromě toho definuje obsah našeho bloku, který má být uložen do databáze příspěvků. Uložení obsahu bloku je poměrně jednoduché, jak vidíme níže:
save: function (props) if (! rekvizity ||! props.attributes.seriesContent) return; var content = props.attributes.seriesContent; return [el ('div', '' class ':' serie-html5 ',' id ':' série-html-post-id-001 ', obsah),];
Co bude dál?
Gutenberg změní WordPress ekosystém pro lepší (nebo možná horší). Umožňuje vývojářům přijmout nový způsob vývoje WordPress pluginů a témat. Gutenberg je jen začátek. Brzy “Blok” paradigma bude rozšířena do dalších oblastí WordPressu, jako jsou API nastavení a widgety.
Naučte JavaScript hluboce; je to jediný způsob, jak se dostat do Gutenbergu a zůstat relevantní pro budoucnost ve WordPress průmyslu. Pokud jste již obeznámeni se základy JavaScriptu, s vtipy, funkcemi, nástroji, zbožím a zlými, jsem si jistý, že s Gutenbergem dosáhnete rychlosti.
Jak bylo zmíněno, Gutenberg vystavuje hojnost API, dost, aby udělal téměř cokoliv do vašeho bloku. Můžete zvolit, zda kód váš blok s obyčejný starý JavaScript, JavaScript se syntaxí ES6, React, nebo dokonce Vue.
Nápady a inspirace
Vytvořil jsem velmi (velmi) jednoduchý Gutenberg Block, který najdete v repozitáři našeho Github účtu. Dále jsem také sestavil řadu repozitářů, odkud můžete řídit inspiraci při budování komplexnějšího bloku.
- Gutenblocks - sbírka bloků Mathieu Viet psaný v JavaScriptu s ES5 syntaxí
- Jetpack Gutenblocks projekt - sbírka bloků svázaných v Jetpack
- Seznam příkladů Gutenberg implementace včetně Vue.js
Další reference
- Oficiální repozitář Gutenberg
- Gutenbergova příručka