Gutenberg Všetko, čo potrebujete vedieť o najnovšom editore WordPress
Gutenberg je nový editor pre WordPress, ktorý bude úplne nahradiť aktuálny editor TinyMCE. Je to ambiciózny projekt, ktorý pravdepodobne zmení WordPress mnohými spôsobmi a bude mať vplyv na pravidelných koncových používateľov a vývojárov, konkrétne na tých, ktorí sú závislí na obrazovke editora pre prácu na WordPress. Tu je, ako to vyzerá.
Gutenberg tiež zavádza novú paradigmu v programe WordPress nazvanom “blok”.
“blok” je abstraktný termín používaný na opis jednotiek značkovania ktoré sa skladajú z obsahu alebo rozloženia webovej stránky. Myšlienka kombinuje pojmy toho, čo v dnešnom WordPress sme dosiahli skrátených kópií, vlastného kódu HTML a integráciu do jediného konzistentného rozhrania API a skúsenosti používateľov.
Nastavenie projektu
S vedomím, že Gutenberg je postavený na vrchole React, niektorí vývojári sa obávajú, že bariéra je príliš vysoká pre začínajúcich developerov pre rozvoj Gutenbergu.
Nastavenie React.js môže byť dosť časovo náročné a mätúce, ak ste s tým začali. Budete potrebovať aspoň JSX transformátor, Babel, v závislosti od vášho kódu budete potrebovať nejaké Babel pluginy a Bundler ako Webpack, Rollup alebo Parcel.
našťastie, niektorí ľudia v komunite WordPress sa zintenzívnili a snažia sa, aby sa Gutenberg stal čo najjednoduchším, aby ho každý mohol sledovať. Dnes máme nástroj, ktorý vytvorí Gutenbergovu kotlinu tak môžeme začať písať kód hneď namiesto toho, aby ste sa oboznámili s nástrojmi a konfiguráciami.
Vytvorte Guten Block
vytvoriť-Guten-blok
je iniciovaný projekt od Ahmada Awaisa. Je to sada nástrojov s nulovou konfiguráciou (# 0CJS
), ktoré vám umožnia vytvoriť Gutenbergovu bloku s niekoľkými prednastavenými modernými stackami vrátane React, Webpack, ESNext, Babel, ESLint a Sass. Postupujte podľa pokynov a začnite s funkciou Vytvoriť Guten Block.
Pomocou ES5 (ECMAScript 5)
Použitie všetkých týchto nástrojov na vytvorenie jednoduchého “ahoj-world” blok sa môže zdať príliš veľa. Ak máte záujem udržať svoje stohy naklonené, môžete skutočne vytvoriť gutenbergský blok pomocou jednoduchého dobrého ol 'ECMAScript 5, s ktorým by ste už mali oboznámenie. Ak máte WP-CLI 1.5.0 nainštalovaný v počítači, môžete jednoducho spustiť ...
wp lešenia[--Title = ] [--dashicon = ] [--kategória = ] [--theme] [--plugin = ] [--force]
... do vygenerujte Gutenbergov blok bloku do doplnku alebo témy. Tento prístup je oveľa rozumnejší, najmä pre existujúce zásuvné moduly a motívy, ktoré ste vytvorili pred Gutenbergovu éru.
Namiesto vytvorenia nového doplnku na prispôsobenie blokov Gutenberg by ste mohli chcieť integrovať bloky do vašich pluginov alebo tém. A aby sa tento návod ľahko sledoval pre každého, budeme používať ECMAScript 5 s WP-CLI.
Registrácia nového bloku
Gutenberg je v súčasnosti vyvinutý ako plugin a bude zlúčený s aplikáciou WordPress 5.0 vždy, keď tím bude mať pocit, že je pripravený. Takže zatiaľ budete musieť ho nainštalovať z Stránka Pluginy v wp-admin
. Keď ho nainštalujete a aktivujete, spustite nasledujúci príkaz v termináli alebo v príkazovom riadku, ak používate stroj so systémom Windows.
séria sádrového bloku wp série - title = "Séria HTML5" - téma
Tento príkaz vygeneruje blok na aktuálne aktívnu tému. Náš blok sa bude skladať z nasledujúcich súborov:
. â ??  ?? â ??  ?? â ??  ?? séria â ?? Â'Ã' Ã' â ??  ?? â ??  ?? â ??  ?? block.js â ?? Â'Ã' Ã' â ??  ?? â ??  ?? â ??  ?? editor.css â ?? Â'Ã' Ã' â ??  ?? â ??  ?? â ??  ?? style.css â ??  ?? â ??  ?? â ??  ?? series.php
Načítať hlavný súbor našich blokov do priečinka functions.php
našej témy:
ak (function_exists ('register_block_type')) vyžadujú get_template_directory (). '/Blocks/series.php';
Všimnite si, že zatvorenie súboru uzavrieme s podmieneným. To zaisťuje kompatibilita s predchádzajúcou verziou WordPress, že náš blok je načítaný len vtedy, keď je prítomný Gutenberg. Náš blok by teraz mal byť k dispozícii v rámci Gutenbergovho rozhrania.
Ako to vyzerá pri vkladaní bloku.
API Gutenberg
Gutenberg zavádza dve sady rozhraní API na registráciu nového bloku. Ak sa pozrieme na series.php
, nájdeme nasledujúci kód, ktorý zaregistruje náš nový blok. To tiež načíta štýl a jazyk JavaScript na front-end a editor.
register_block_type ('twentyseventeen / series', array ('editor_script' => 'series-block-editor', 'editor_style' => 'series-block-editor';
Ako môžeme vidieť vyššie, náš blok je pomenovaný twentyseventeen / series
, názov bloku musí byť jedinečný a menný, aby sa zabránilo kolíziám s ostatnými blokmi, ktoré prinášajú ostatné doplnky.
okrem toho, Gutenberg poskytuje súbor nových rozhraní API jazyka JavaScript, ktoré komunikujú s “blok” rozhranie v editore. Vzhľadom k tomu, že rozhranie API je pomerne hojné, budeme sa zameriavať na niektoré špecifiká, ktoré by podľa mňa mali byť jednoduché, ale fungujúce Gutenberg Block.
wp.blocks.registerBlockType
Najprv sa budeme zaoberať wp.blocks.registerBlockType
. Táto funkcia sa používa na zaregistrovať nový “blok” na Gutenbergovu redakciu. Vyžaduje to dva argumenty. Prvým argumentom je názov bloku, ktorý by mal nasledovať po názve zaregistrovanom v priečinku register_block_type
funkcia na strane PHP. Druhým argumentom je Objekt definujúci vlastnosti bloku ako je názov, kategória a niekoľko funkcií na vykreslenie rozhrania bloku.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType ('twentyseventeen / series', title: __ ('Séria HTML5'), kategória: 'widgets', kľúčové slová: ['html'], edit: function (props) );
wp.element.createElement
Táto funkcia umožňuje vytvoriť prvok v rámci “blok” v príspevkovom editore. wp.element.createElement
funkcia je v podstate abstrakciou Reactu createElement ()
tak akceptuje rovnaký súbor argumentov. Prvým argumentom je typ prvku, napríklad odsek, a rozpätie
, alebo a div
ako je uvedené nižšie:
wp.element.createElement ( 'div');
Môžeme alias funkcie do premennej preto je kratšie písať. Napríklad:
var el = wp.element.createElement; el ( 'div');
Ak ty uprednostňuje použitie novej syntaxe ES6, môžete tak urobiť aj takto:
konst createElement: el = wp.element; el ( 'div');
Môžeme tiež pridajte atribúty prvkov ako trieda
názov alebo id
na druhý parameter takto:
var el = wp.element.createElement; el ('div', 'trieda': 'séria-html5', 'id': 'séria-html-post-id-001');
div
ktoré sme vytvorili, by bez obsahu nemalo zmysel. Môžeme pridajte obsah do argumentu tretieho parametra:
var el = wp.element.createElement; el ('p', 'class': 'series-html5', 'id': 'sériový-html-post-id-001', Tento článok je súčasťou našej série "HTML5 / CSS3 Tutorials" aby ste sa stali lepším dizajnérom a / alebo vývojárom. Kliknite sem a uvidíte ďalšie články z tej istej série ");
wp.components
wp.components
obsahujú zbierku komponentov Gutenberg, ako to naznačuje názov. Tieto komponenty sú z technického hľadiska reaktívne vlastné súčasti, ktoré obsahujú tlačidlo Button, Popover, Spinner, Tooltip a veľa ďalších. Môžeme znovu použite tieto komponenty do nášho vlastného bloku. V nasledujúcom príklade pridáme komponent tlačidla.
var Button = wp.components.Button; el (Tlačidlo, 'class': 'download-button',, 'Download');
atribúty
Atribúty sú spôsoby ukladania údajov do nášho bloku, tieto údaje môžu byť podobné obsahu, farbám, zarovnanosti, adrese URL atď. Môžeme získať atribúty z vlastností odovzdaných na Upraviť ()
funkcie:
upraviť: funkcia (rekvizity) var content = props.attributes.seriesContent; návrat el ('div', 'trieda': 'séria-html5', 'id': 'séria-html-post-id-001', obsah);
Ak chcete aktualizovať atribúty, použijeme setAttributes ()
Funkcie. Zvyčajne by sme obsah zmenili na určitú akciu, napríklad pri kliknutí na tlačidlo, vloženie je vyplnené, je vybratá možnosť atď. V nasledujúcom príklade ho používame na pridanie fallback obsah nášho bloku v prípade, že sa nám stalo niečo neočakávané seriesContent
atribút.
editovať: funkcia (rekvizity) if (typeof props.attributes.seriesContent === 'undefined' ||! props.attributes.seriesContent) props.setAttribute contentContent: 'Hello World! ) var content = props.attributes.seriesContent; návrat [el ('div', 'trieda': 'séria-html5', 'id': 'séria-html-post-id-001';
Uloženie bloku
save ()
funkcia funguje podobne ako Upraviť ()
, okrem toho, že definuje obsah nášho bloku na uloženie do databázy príspevkov. Ukladanie obsahu bloku je úplne jednoduché, ako vidíme nižšie:
uložiť: funkcia (rekvizity) if (! props ||! props.attributes.seriesContent) návrat; var content = props.attributes.seriesContent; návrat [el ('div', 'trieda': 'séria-html5', 'id': 'séria-html-post-id-001';
Čo bude ďalej?
Gutenberg zmení ekosystém WordPress k lepšiemu (prípadne horšiemu). Umožňuje vývojárom prijať nový spôsob vývoja pluginov a tém WordPress. Gutenberg je len začiatok. Čoskoro “blok” paradigma bude rozšírená aj na iné oblasti aplikácie WordPress, ako sú API nastavenia a miniaplikácie.
Naučte JavaScript v hĺbke; je to jediný spôsob, ako sa dostať do Gutenbergu a zostať relevantné pre budúcnosť v odvetví WordPress. Ak ste už oboznámení so základnými informáciami jazyka JavaScript, s kvízmi, funkciami, nástrojmi, tovarom a bajtami, som si istý, že sa s Gutenbergom stanete rýchlosťou.
Ako už bolo spomenuté, Gutenberg odhaľuje množstvo API, čo je dosť na to, aby ste urobili takmer čokoľvek do vášho bloku. Môžete si vybrať, či chcete kód svojho bloku pomocou jednoduchého starého jazyka JavaScript, JavaScript s syntaxou ES6, React alebo dokonca Vue.
Nápady a inšpirácie
Vytvoril som veľmi (veľmi) jednoduchý Gutenberg Block, ktorý nájdete v úložisku nášho účtu Github. Okrem toho som tiež dal dohromady niekoľko repozitárov, z ktorých môžete inšpirovať budovanie komplexnejších blokov.
- Gutenblocks - zbierka blokov od Mathieu Viet napísaná v jazyku JavaScript s syntaxou ES5
- Projekt Jetpack Gutenblocks - zbierka blokov v balíku Jetpack
- Zoznam príkladov implementácie programu Gutenberg vrátane programu Vue.js
Ďalšie odkazy
- Gutenberg Úradné úložisko
- Gutenberg Handbook