Gutenberg Sve što trebate znati o WordPress 'Najnoviji urednik
Gutenberg je novi urednik WordPressa koji će potpuno zamijenite trenutni TinyMCE uređivač. Riječ je o ambicioznom projektu koji će vjerojatno na različite načine promijeniti WordPress i utjecati na redovne krajnje korisnike i programere, posebno one koji ovise o uređivačkom zaslonu za rad na WordPressu. Evo kako to izgleda.
Gutenberg također uvodi novu paradigmu u WordPressu “Blok”.
“Blok” je apstraktni izraz koji se koristi za opisivanje jedinice označivanja koji su sastavljeni od sadržaja ili izgleda web-stranice. Ideja kombinira koncepte onoga što u WordPressu danas postižemo kratki kodovi, prilagođeni HTML i ugradnja otkrića u jedan konzistentan API i korisničko iskustvo.
Postavljanje projekta
Znajući činjenicu da je Gutenberg izgrađen na vrhu Reacta, neki programeri su zabrinuti da je Pregrada je previsoka za početnike u razvoju Gutenberga.
Postavljanje React.js moglo bi biti prilično dugotrajno i zbunjujuće ako ste tek počeli s njim. Trebat će vam barem JSX transformator, Babel, ovisno o vašem kodu možda će vam trebati Babel plugins, a Bundler poput Webpack, Rollup ili Parcel.
srećom, neki ljudi unutar WordPress zajednice pojačali su se i pokušavaju učiniti razvoj Gutenberga što je moguće lakšim za svakoga. Danas imamo alat koji će tako generirati Gutenbergov predložak odmah možemo početi pisati kod umjesto da se zbunjuju alatima i konfiguracijama.
Napravite blok Guten
stvoriti-Guten-blok
je inicirani projekt Ahmada Awaisa. To je komplet alata s nultom konfiguracijom (# 0CJS
) koji će vam omogućiti da razvijete Gutenberg blok s nekim modernim stackovima, uključujući React, Webpack, ESNext, Babel, ESLint i Sass. Slijedite upute da biste započeli s blokom Create Guten.
Korištenje ES5 (ECMAScript 5)
Koristeći sve te alate za stvaranje jednostavnog “Pozdrav svijete” blok može izgledati previše. Ako želite zadržati svoje hrpe mršavih, zapravo možete razviti Gutenbergov blok pomoću običnog dobrog ECMAScripta 5 s kojim ste možda već upoznati. Ako imate Na računalu je instaliran WP-CLI 1.5.0, možete jednostavno pokrenuti ...
blok skele wp[--Title = ] [--dashicon = ] [--category = ] [- theme] [--plugin = ] [--force]
... do generirati predložak Gutenberg bloka za svoj dodatak ili temu. Ovaj je pristup osjetljiviji, posebno za postojeće dodatke i teme koje ste razvili prije Gutenbergovog doba.
Umjesto stvaranja novog dodatka za smještaj Gutenbergovih blokova, možda ćete htjeti integrirati blokove u vaše dodatke ili teme. I kako bi ovaj tutorial lako slijediti za svakoga, koristit ćemo ECMAScript 5 s WP-CLI.
Registriranje novog bloka
Gutenberg je trenutno razvijen kao dodatak i spojit će se s WordPressom 5.0 kad god se tim osjeća spremnim. Dakle, za sada, trebat ćete ga instalirati iz Stranica dodataka u wp-admin
. Nakon što ste ga instalirali i aktivirali, pokrenite sljedeću naredbu u terminalu ili naredbenom retku ako ste na računalu sa sustavom Windows.
wp blok skele serija --title = "HTML5 Series" - tema
Ova će naredba generirati blok na trenutno aktivnu temu. Naš blok će se sastojati od sljedećih datoteka:
. Ă¢Â ??  ?? ¢ ??  ?? ¢ ??  ?? serije âÂ? Â'Ã' Ã' â ??  ?? ¢ ??  ?? ¢ ??  ?? block.js âÂ? Â'Ã' Ã' â ??  ?? ¢ ??  ?? ¢ ??  ?? editor.css âÂ? Â'Ã' Ã' â ??  ?? ¢ ??  ?? ¢ ??  ?? style.css â ??  ?? ¢ ??  ?? ¢ ??  ?? series.php
Učitajmo glavnu datoteku naših blokova u functions.php
naše teme:
if (function_exists ('register_block_type')) zahtijevaju get_template_directory (). '/Blocks/series.php';
Primijetite da datoteku učitavamo s uvjetnim. To osigurava kompatibilnost s prethodnom verzijom programa WordPress da je naš blok učitan samo kada je Gutenberg prisutan. Naš blok bi sada trebao biti dostupan unutar Gutenbergovog sučelja.
Ovako izgleda kada ubacimo blok.
Gutenbergovi API-ji
Gutenberg uvodi dva seta API-ja za registriranje novog bloka. Ako pogledamo series.php
, naći ćemo sljedeći kod koji registrira naš novi blok. Također učitava stilsku ploču i JavaScript na front-end i editor.
register_block_type ('twentyseventeen / series', niz ('editor_script' => 'series-block-editor', 'editor_style' => 'series-block-editor', 'style' => 'series-block',));
Kao što možemo vidjeti gore, naš blok je imenovan twentyseventeen / serija
, Naziv bloka mora biti jedinstven i prostorno označen kako bi se izbjegao sudar s drugim blokovima koje donose drugi dodaci.
osim toga, Gutenberg nudi skup novih JavaScript API-ja za interakciju s “Blok” sučelje u uređivaču. Budući da je API dosta obilan, usredotočit ćemo se na neke specifičnosti za koje mislim da biste trebali znati kako biste dobili jednostavan, ali funkcionalan blok Gutenberg.
wp.blocks.registerBlockType
Prvo ćemo istražiti wp.blocks.registerBlockType
. Ova funkcija je korištena registrirati novo “Blok” Gutenbergovom uredniku. Za to su potrebna dva argumenta. Prvi argument je ime bloka koje treba slijediti ime registrirano u register_block_type
funkcija na PHP strani. Drugi argument je Object definira svojstva bloka kao što su naslov, kategorija i nekoliko funkcija za prikaz sučelja Block.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType ('twentyseventeen / series', title: __ ('HTML5 Series'), kategorija: 'widgets', ključne riječi: ['html'], edit: function (props) , save: function (props) );
wp.element.createElement
Ova funkcija omogućuje stvaranje elementa unutar “Blok” u uređivaču postova. wp.element.createElement
Funkcija je u osnovi apstrakcija Reakcije createElement ()
tako prihvaća isti skup argumenata. Prvi argument uzima vrstu elementa, primjerice, stavak, a pedalj
, ili a div
kako je prikazano dolje:
wp.element.createElement ( 'div');
Možemo alias funkciju u varijablu tako da je kraće pisati. Na primjer:
var el = wp.element.createElement; el ( 'div');
Ako ti preferiraju novu ES6 sintaksu, to možete učiniti i na ovaj način:
const createElement: el = wp.element; el ( 'div');
Možemo također dodajte atribute elemenata kao klasa
ime ili iskaznica
na drugom parametru kako slijedi:
var el = wp.element.createElement; el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001');
div
koje smo stvorili ne bi imalo smisla bez sadržaja. Možemo dodajte sadržaj na argument trećeg parametra:
var el = wp.element.createElement; el ('p', 'class': 'series-html5', 'id': 'series-html-post-id-001', 'Ovaj je članak dio naše "serije HTML5 / CSS3 Tutorials" - posvećenih kako bi vam pomogao da postanete bolji dizajner i / ili programer. Kliknite ovdje da biste vidjeli više članaka iz iste serije ');
wp.components
wp.components
sadrži zbirku Gutenbergovih komponenti, kao što i samo ime implicira. Te su komponente tehnički React prilagođene komponente koje uključuju Button, Popover, Spinner, Tooltip i hrpu drugih. Možemo ponovno upotrijebite ove komponente u naš vlastiti blok. U sljedećem primjeru dodamo komponentu gumba.
var Button = wp.components.Button; el (Button, 'class': 'gumb za preuzimanje',, 'Download');
Značajke
Atributi su način pohranjivanja podataka u naš Blok, a ti podaci mogu biti poput sadržaja, boja, poravnanja, URL-a itd. Atribute možemo dobiti iz svojstava prenesenih na Uredi()
funkcija, kako slijedi:
edit: function (props) var content = props.attributes.seriesContent; return el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', sadržaj);
Za ažuriranje atributa koristimo setAttributes ()
funkcija. Tipično bismo izmijenili sadržaj na određenoj radnji, primjerice kada se klikne na gumb, unesemo unos, odaberemo opciju, itd. U sljedećem primjeru koristimo ga za dodavanje rezervna sadržaj našeg bloka u slučaju da se nešto neočekivano dogodilo našem seriesContent
Atribut.
edit: function (props) if (typeof props.attributes.seriesContent === 'undefined' ||! props.attributes.seriesContent) props.setAttribute (seriesContent: 'Pozdrav svijetu! Ovdje je povratni sadržaj.' ) var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', sadržaj),];
Spremanje bloka
uštedjeti()
Funkcija radi slično kao Uredi()
, osim što definira sadržaj našeg Bloka za spremanje u bazu podataka posta. Spremanje sadržaja bloka vrlo je jednostavno, kao što možemo vidjeti u nastavku:
save: function (props) if (! props ||! props.attributes.seriesContent) return; var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', sadržaj),];
Što je sljedeće?
Gutenberg će promijeniti WordPress ekosustav na bolje (ili možda još gore). To omogućuje programerima da usvojiti novi način razvoja WordPress dodataka i tema. Gutenberg je samo početak. Uskoro “Blok” paradigma će se proširiti na druga područja WordPressa, kao što su API-ji postavki i Widgeti.
Saznajte duboko JavaScript; to je jedini način da uđete u Gutenberg i ostanete relevantni za budućnost u WordPress industriji. Ako ste već upoznati s osnovama JavaScripta, funkcijama, alatima, robom i oštricama, siguran sam da ćete se ubrzati s Gutenbergom.
Kao što je već spomenuto, Gutenberg izlaže obilje API-ja, dovoljno za gotovo sve što je u vašem Bloku. Možete odabrati želite li kodirajte svoj blok s običnim starim JavaScriptom, JavaScriptom s ES6 sintaksu, React ili čak Vue.
Ideje i nadahnuća
Napravio sam vrlo (vrlo) jednostavan Gutenbergov blok koji možete pronaći u spremištu našeg Github računa. Nadalje, također sam sastavio niz spremišta odakle možete inspirirati izgradnju složenijeg bloka.
- Gutenblocks - Zbirka blokova koju je napisao Mathieu Viet u JavaScriptu sa ES5 sintaksom
- Jetpack Gutenblocks Project - zbirka blokova u Jetpacku
- Popis primjera implementacije Gutenberga, uključujući i Vue.js
Daljnje reference
- Službeni repozitorij Gutenberga
- Priručnik za Gutenberg