Gutenberg Kõik, mida pead teadma WordPressist
Gutenberg on uus toimetaja WordPressile, mis täielikult asenda praegune TinyMCE-toega redaktor. See on ambitsioonikas projekt, mis väidetavalt muudab WordPressi mitmel viisil ja mõjutaks nii tavapäraseid lõppkasutajaid kui ka arendajaid, eriti neid, kes sõltuvad WordPressiga töötamiseks mõeldud toimetajaekraanist. Siin on, kuidas see välja näeb.
Gutenberg tutvustab ka uut paradigmat WordPressis “Blokeeri”.
“Blokeeri” on abstraktne termin, mida kasutatakse kirjeldamiseks märgistusühikud mis moodustavad veebilehe sisu või paigutuse. Idee ühendab mõisteid, mida WordPressis täna me saavutame lühikoodid, kohandatud HTML-i ja embed avastamise ühtsesse sidusesse API-sse kasutajate kogemusi.
Projekti seadistamine
Teades, et Gutenberg on ehitatud React'i peale, on mõned arendajad mures selle pärast, et Gutenbergi arendamiseks on algtaseme arendajatele liiga suur barjäär.
React.js'i seadistamine võib olla üsna aeganõudev ja segadust tekitav, kui olete just sellega alustanud. Peate vähemalt, JSX-i transformaator, Babel, sõltuvalt teie koodist võib olla vaja mõnda Babeli pluginat ja Bundlerit nagu veebipakett, rollup või pakett.
Õnneks, mõned inimesed WordPressi kogukonnas kiirendasid ja üritavad muuta Gutenbergi arenguks võimalikult lihtsaks, et igaüks neist järgiks. Täna on meil tööriist, mis loob Gutenbergi katla me võime kohe koodi kirjutada tööriistade ja konfiguratsioonide asemel.
Loo Guteni plokk
The luua-guten-block
on Ahmad Awais algatatud projekt. See on null-konfiguratsiooni tööriistakomplekt (# 0CJS
), mis võimaldab teil välja töötada Gutenbergi plokk mõne kaasaegse stackiga, sealhulgas React, Webpack, ESNext, Babel, ESLint ja Sass. Guteni ploki loomise alustamiseks järgige juhiseid.
ES5 kasutamine (ECMAScript 5)
Kasutades kõiki neid vahendeid, et luua lihtne “Tere, Maailm” plokk võib tunduda liiga palju. Kui soovid hoida oma korstnad lahjana, saate tegelikult välja töötada Gutenbergi ploki, kasutades lihtsat hea ol 'ECMAScript 5-d, mida võiksite juba tunda. Kui teil on WP-CLI 1.5.0 arvutisse installitud, saate lihtsalt käivitada ...
wp tellingute plokk[- pealkiri = ] [- dashicon = ] [- kategooria = ] [--theme] [- plugin = ] [- force]
… genereerige Gutenbergi ploki katlakivi oma plugina või teema jaoks. See lähenemine on mõistlikum, eriti olemasolevate pluginate ja teemade puhul, mida olete arendanud enne Gutenbergi ajastu.
Selle asemel, et luua Gutenbergi plokkide jaoks uus pistikprogramm, võiksite need plokid oma pluginatesse või teemadesse integreerida. Ja selleks, et see juhendaja oleks kõigi jaoks lihtne järgida, kasutame ECMAScript 5 WP-CLI-ga.
Uue ploki registreerimine
Gutenberg on praegu välja töötatud plugina ja see ühendatakse WordPress 5.0-ga, kui meeskond tunneb, et see on valmis. Niisiis peate praegu installima selle Pluginate leht wp-admin
. Kui olete selle installinud ja aktiveerinud, käivitage terminalis või käsuviipis järgmine käsk, kui olete Windowsi seadmes.
wp karkassiplokkide seeria --title = "HTML5 Series" - teema
See käsk genereerib aktiivse teema bloki. Meie plokk koosneb järgmistest failidest:
. â� � â� � â� seeria â       à ¢� � â� � â� block.js â       à ¢� � â� � â� editor.css â       à ¢� � â� � â� style.css â� � â� � â� series.php
Laadime meie plokkide põhifaili funktsioonid.php
meie teema:
kui (function_exists ('register_block_type')) vaja get_template_directory (). '/blocks/series.php';
Pange tähele, et me lisame faili laadimise tingimusliku. See tagab ühilduvus eelmise WordPressi versiooniga, et meie plokk on laaditud ainult siis, kui Gutenberg on kohal. Meie plokk peaks nüüd olema Gutenbergi liideses saadaval.
See, kuidas see bloki sisestamisel näeb.
Gutenbergi API-d
Gutenberg tutvustab kahte API-komplekti uue ploki registreerimiseks. Kui me vaatame series.php
, leiame järgmise koodi, mis registreerib meie uue ploki. See samuti laadib stiili ja JavaScripti esiküljele ja toimetajale.
register_block_type ('twentyseventeen / series', array ('editor_script' => 'series-block-editor', 'editor_style' => 'series-block-editor', 'style' => 'series-block',));
Nagu eespool näeme, on meie plokk nimeks twentyseventeen / series
, Blokeeringu nimi peab olema unikaalne ja nimesuunatud, et vältida kokkupõrkeid teiste plokkide poolt toodetud plokkidega.
Lisaks sellele, Gutenberg pakub mitmeid uusi JavaScripti API-sid “Blokeeri” liides redaktoris. Kuna API on küllaltki rohkelt, keskendume mõningatele spetsiifilistele küsimustele, mida ma arvan, et peaksite teadma, et saaksid lihtsa, kuid veel toimiva Gutenbergi ploki.
wp.blocks.registerBlockType
Esiteks uurime wp.blocks.registerBlockType
. Seda funktsiooni kasutatakse registreerige uus “Blokeeri” Gutenbergi toimetajale. See nõuab kahte argumenti. Esimene argument on ploki nimi, mis peaks järgima nime, mis on registreeritud register_block_type
funktsiooni PHP poolel. Teine argument on Objekti, mis määratleb ploki omadused nagu pealkiri, kategooria ja paar funktsiooni ploki liidese muutmiseks.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType ('twentyseventeen / series', pealkiri: __ ('HTML5 Series'), kategooria: "vidinad", märksõnad: ['html'], redigeeri: funktsioon (rekvisiidid) , salvestada: funktsioon (rekvisiidid) );
wp.element.createElement
See funktsioon võimaldab luua elemendi “Blokeeri” postiredaktoris. The wp.element.createElement
funktsioon on põhimõtteliselt reaktsiooni võtmine createElement ()
seega aktsepteerib ta sama argumentide kogumit. Esimene argument võtab elemendi tüübi näiteks punkti, a span
, või a div
nagu allpool näidatud:
wp.element.createElement ('div');
Me saame alias funktsiooni muutujaks nii et see on lühem kirjutada. Näiteks:
var el = wp.element.createElement; el ('div');
Kui sa eelistavad kasutada uut ES6 süntaksit, seda saab teha ka järgmiselt:
const createElement: el = wp.element; el ('div');
Me võime ka lisage elemendi atribuudid nagu klassi
nimi või id
teisele parameetrile:
var el = wp.element.createElement; el ('div', 'class': 'series-html5', 'id': 'seeria-html-post-id-001'));
The div
meie loodud sisu ei oleks mõistlik ilma sisuta. Me saame lisage sisu kolmanda parameetri argumendile:
var el = wp.element.createElement; el ('p', 'class': 'series-html5', 'id': 'series-html-post-id-001'), 'See artikkel on osa meie "HTML5 / CSS3 juhendite seeriast" - pühendatud paremate disainerite ja / või arendajate loomise hõlbustamiseks klõpsake siia, et näha rohkem sama seeria artikleid ”);
wp.components
The wp.components
sisaldama Gutenbergi komponentide kogumit, nagu nimigi ütleb. Need komponendid on tehniliselt React custom komponendid, mis sisaldavad nuppu Button, Popover, Spinner, Tooltip ja hulga teisi. Me saame kasutage neid komponente uuesti oma plokki. Järgmises näites lisame nupu komponendi.
var Button = wp.components.Button; el (nupp, 'class': 'download-button', ►, 'Download');
Atribuudid
Atribuudid on viis andmete salvestamiseks meie plokki, need andmed võivad olla nagu sisu, värvid, joondused, URL jne. Me saame atribuudid atribuutidest, mis on edastatud muuda ()
funktsioon:
redigeeri: funktsioon (rekvisiidid) var content = props.attributes.seriesContent; tagastage el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001'), sisu);
Atribuutide värskendamiseks kasutame setAttributes ()
funktsiooni. Tavaliselt muudaksime teatud toimingute sisu, näiteks kui nupule klõpsatakse, sisend on täidetud, valik on valitud jne. Järgmises näites kasutame seda, et lisada varu meie ploki sisu puhul, kui meie jaoks juhtus midagi ootamatut seriesContent
Atribuut.
redigeeri: funktsiooni (rekvisiidid) if (tüübi props.attributes.seriesContent === 'määratlemata' ||! props.attributes.seriesContent) props.setAttribute (seriesContent: Hello World! Siin on varukoopia sisu. ' ) var content = props.attributes.seriesContent; tagasi [el ('div', 'class': 'series-html5', 'id': 'seeria-html-post-id-001'), sisu),];
Bloki salvestamine
The salvestage ()
funktsioon toimib sarnaselt muuda ()
, välja arvatud see, mis määratleb meie ploki sisu postitusandmebaasi salvestamiseks. Blokeerimise sisu salvestamine on üsna lihtne, nagu allpool näeme:
salvestada: funktsioon (rekvisiidid) if (! rekvisiidid ||! props.attributes.seriesContent) tagasi; var content = props.attributes.seriesContent; tagasi [el ('div', 'class': 'series-html5', 'id': 'seeria-html-post-id-001'), sisu),];
Mis järgmiseks?
Gutenberg muudab WordPressi ökosüsteemi paremaks (või isegi halvemaks). See võimaldab arendajatel võtta kasutusele uus viis WordPressi pluginate ja teemade arendamiseks. Gutenberg on vaid algus. Varsti “Blokeeri” paradigma laiendatakse WordPressi muudesse valdkondadesse, nagu seadete API-d ja vidinad.
Õpi JavaScript sügavalt; see on ainus viis pääseda Gutenbergi ja jääda WordPressi tööstuse tuleviku seisukohalt asjakohaseks. Kui olete juba tutvunud JavaScripti põhitõedega, quirks'idega, funktsioonidega, tööriistadega, kaupadega ja halbadega, siis olen tõesti kindel, et jõuad Gutenbergi juurde.
Nagu mainitud, paljastab Gutenberg arvukalt API-sid, mis on piisavad, et teie plokkile peaaegu midagi teha. Võite valida, kas koodige oma plokk lihtsa vana JavaScripti, JavaScriptiga, millel on ES6 süntaks, React või isegi Vue.
Ideed ja inspiratsioonid
Olen loonud väga (väga) lihtsa Gutenbergi ploki, mis on meie Githubi konto hoidlas. Lisaks sellele olen ma pannud kokku ka mitmeid hoidlaid, kust saab inspireerida keerukama ploki ehitamist.
- Gutenblocks - Mathieu Vieti plokkide kogum, mis on kirjutatud JavaScriptis koos ES5 süntaksiga
- Jetpack Gutenblocks Project - Jetpackiga komplekteeritud plokkide kogum
- Gutenbergi rakenduste näidete loetelu koos Vue.jsiga
Täiendav viide
- Gutenbergi ametlik hoidla
- Gutenbergi käsiraamat