Gutenberg Vse, kar morate vedeti o najnovejšem urejevalniku WordPress
Gutenberg je nov urednik za WordPress, ki bo popolnoma zamenjajte trenutni urejevalnik, ki ga poganja TinyMCE. Gre za ambiciozen projekt, ki bo verjetno spremenil WordPress na več načinov in bi prizadel tako redne končne uporabnike kot tudi razvijalce, predvsem tiste, ki so odvisni od uredniškega zaslona za delo z WordPressom. Tukaj je, kako izgleda.
Gutenberg uvaja tudi novo paradigmo v WordPressu “Blokiraj”.
“Blokiraj” je abstraktni izraz, ki se uporablja za opis enote označevanja ki so sestavljeni iz vsebine ali postavitve spletne strani. Ideja združuje koncepte o tem, kaj danes v WordPressu dosegamo kratke kode, HTML po meri in vdelavo odkrivanja v en sam skladen API in uporabniško izkušnjo.
Vzpostavitev projekta
Poznavanje dejstva, da je Gutenberg zgrajen na vrhu Reacta, so nekateri razvijalci zaskrbljeni, da pregrada je previsoka za začetnike, ki razvijajo Gutenberg.
Nastavitev React.js bi lahko bila precej zamudna in zmedena, če ste jo šele začeli uporabljati. Potrebovali boste vsaj transformator JSX, Babel, odvisno od vaše kode, boste morda potrebovali nekaj Babel plugins in Bundler, kot je Webpack, Rollup ali Parcel.
Na srečo, nekateri ljudje v skupnosti WordPress so se okrepili in se trudijo, da bi Gutenberg čim lažje sledili. Danes imamo orodje, ki bo tako ustvarilo Gutenbergovo predlogo takoj lahko začnemo pisati kodo namesto da bi se motili z orodji in konfiguracijami.
Ustvari blok Guten
The create-guten-block
je projekt, ki ga je sprožil Ahmad Awais. Je komplet orodij brez nastavitve (# 0CJS
), ki vam bo omogočil razvoj Gutenbergovega bloka z nekaterimi modernimi prednastavitvami, kot so React, Webpack, ESNext, Babel, ESLint in Sass. Sledite navodilom, da začnete z Create Guten Block.
Uporaba ES5 (ECMAScript 5)
Uporaba vseh teh orodij za ustvarjanje preprostih “Pozdravljen, svet” blok se morda zdi preveč. Če želite ohraniti svoje vitke vitkejših, lahko dejansko razvijete Gutenbergov blok z uporabo navadnega dobrega ECMAScripta 5, ki ga morda že poznate. Če imate V računalniku je nameščen WP-CLI 1.5.0, preprosto lahko zaženete ...
blok gradbenih odrov[--title = ] [--dashicon = ] [--category = ] [--theme] [--plugin = ] [--force]
… Do ustvarite predlogo Gutenberg bloka za vaš plugin ali temo. Ta pristop je bolj smiseln, zlasti za obstoječe vtičnike in teme, ki ste jih razvili pred Gutenberško dobo.
Namesto ustvarjanja novega vtičnika za prilagoditev Gutenbergovih blokov, boste morda želeli povezati bloke z vtičniki ali temami. In za to, da je ta vadba preprosta za vsakogar, uporabljali bomo ECMAScript 5 z WP-CLI.
Registracija novega bloka
Gutenberg je trenutno razvit kot vtičnik in se bo združil z WordPress 5.0, ko bo ekipa menila, da je pripravljena. Torej ga boste za zdaj morali namestiti iz Stran z vtičniki v wp-admin
. Ko ga namestite in aktivirate, zaženite naslednji ukaz v terminalu ali v ukaznem pozivu, če ste na računalniku z operacijskim sistemom Windows.
wp scaffold blok serija --title = "HTML5 Series" - tema
Ta ukaz ustvari blok na trenutno aktivno temo. Naš blok bo sestavljen iz naslednjih datotek:
. â ?? â ?? â ?? serije âÂ? Â'Ã' Ã' â ?? â ?? â ?? block.js âÂ? Â'Ã' Ã' â ?? â ?? â ?? editor.css âÂ? Â'Ã' Ã' â ?? â ?? â ?? style.css â ?? â ?? â ?? series.php
Naložimo glavno datoteko naših blokov v functions.php
naše teme:
if (function_exists ('register_block_type')) zahteva get_template_directory (). '/blocks/series.php';
Opazimo, da smo datoteko naložili s pogojno. To zagotavlja združljivost s prejšnjo različico programa WordPress, da je naš blok naložen le, če je prisoten Gutenberg. Naš blok bi moral biti zdaj na voljo znotraj Gutenbergovega vmesnika.
Tako izgleda, ko vstavimo blok.
Gutenberg API
Gutenberg uvaja dva niza API-jev za registracijo novega bloka. Če pogledamo series.php
, našli bomo naslednjo kodo, ki beleži naš novi blok. Tudi naloži slogovno predlogo in JavaScript na sprednji in urejevalnik.
register_block_type ('twentyseventeen / series', array ('editor_script' => 'series-block-editor', 'editor_style' => 'series-block-editor', 'style' => 'series-block',));
Kot lahko vidimo zgoraj, je naš blok imenovan enaindvajset / serija
, Ime Block mora biti unikatno in imenovano, da bi se izognili koliziji z drugimi bloki, ki jih prinesejo drugi vtičniki.
Poleg tega, Gutenberg ponuja vrsto novih API-jev JavaScript za interakcijo z “Blokiraj” vmesnik v urejevalniku. Ker je API precej obilen, se bomo osredotočili na nekatere posebnosti, za katere mislim, da bi morali vedeti, da boste dobili preprost, a delujoč blok Gutenberg.
wp.blocks.registerBlockType
Prvič, preučili bomo wp.blocks.registerBlockType
. Ta funkcija je uporabljena registrirati novo “Blokiraj” Gutenbergu. Zahteva dva argumenta. Prvi argument je ime bloka, ki mora slediti imenu, registriranemu v register_block_type
funkcijo na strani PHP. Drugi argument je Definiranje lastnosti blokovnih objektov kot so naslov, kategorija in nekaj funkcij, ki omogočajo vmesnik Block.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType ('twentyseventeen / series', title: __ ('HTML5 Series'), kategorija: 'pripomočki', ključne besede: ['html'], uredi: funkcija (rekviziti) , shrani: funkcija (rekviziti) );
wp.element.createElement
Ta funkcija vam omogoča, da ustvarite element znotraj “Blokiraj” v urejevalniku objav. The wp.element.createElement
Funkcija je v bistvu abstrakcija Reacta createElement ()
funkcijo, tako da sprejme isti niz argumentov. Prvi argument vzame tip elementa, na primer odstavek, a razpon
, ali a div
kot je prikazano spodaj:
wp.element.createElement („div“);
Mi lahko alias funkcijo v spremenljivko zato je krajše pisati. Na primer:
var el = wp.element.createElement; el ('div');
Če ti raje uporabljajo novo skladnjo ES6, lahko to storite tudi tako:
const createElement: el = wp.element; el ('div');
Lahko tudi dodajte atribute elementa kot je razred
ime ali id
na drugem parametru:
var el = wp.element.createElement; el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001');
The div
ki smo jih ustvarili, ne bi imeli smisla brez vsebine. Mi lahko dodajte vsebino na argument tretjega parametra:
var el = wp.element.createElement; el ('p', 'class': 'series-html5', 'id': 'series-html-post-id-001', 'Ta članek je del naše "serije vadnic HTML5 / CSS3" - namenjen da bi vam pomagali, da ste boljši oblikovalec in / ali razvijalec. Kliknite tukaj za več člankov iz iste serije ');
wp.components
The wp.components
vsebujejo zbirko Gutenbergovih sestavin, kot že ime pove. Te komponente so tehnično komponente React custom, ki vključujejo gumb, popover, Spinner, Tooltip in veliko drugih. Mi lahko ponovno uporabite te komponente v naš blok. V naslednjem primeru dodamo komponento gumba.
var Button = wp.components.Button; el (Button, 'class': 'gumb za prenos',, 'Download');
Lastnosti
Atributi so način za shranjevanje podatkov v našem bloku, ti podatki so lahko podobni vsebini, barvam, poravnavam, URL-ju itd. Atribute lahko dobimo iz lastnosti, prenesene na Uredi()
funkcijo, kot sledi: \ t
edit: funkcija (props) var content = props.attributes.seriesContent; return el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', vsebina);
Za posodobitev atributov uporabimo setAttributes ()
funkcijo. Običajno bi spremenili vsebino določenega dejanja, na primer ob kliku gumba, vnosu, izbrani možnosti itd. V naslednjem primeru ga uporabimo za dodajanje pasti nazaj vsebino našega bloka v primeru, da se je našemu kaj zgodilo nekaj nepričakovanega seriesContent
Atribut.
edit: function (props) if (typeof props.attributes.seriesContent === 'undefined' ||! props.attributes.seriesContent) props.setAttribute (seriesContent: 'Pozdrav svet! ) var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', vsebina),];
Shranjevanje bloka
The shrani ()
Funkcija deluje podobno kot Uredi()
, razen, da definira vsebino našega bloka za shranjevanje v bazo podatkov posta. Shranjevanje vsebine bloka je precej preprosto, kot lahko vidite spodaj:
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', vsebina),];
Kaj je naslednje?
Gutenberg bo spremenil WordPress ekosistem na bolje (ali morda še slabše). To omogoča razvijalcem sprejme nov način razvoja WordPress vtičnikov in tem. Gutenberg je samo začetek. Kmalu “Blokiraj” paradigma bo razširjena na druga področja WordPressa, kot so API-ji za nastavitve in Widgets.
Naučite JavaScript globoko; to je edini način, da pridete v Gutenberg in ostanete relevantni za prihodnost v industriji WordPress. Če ste že seznanjeni z osnovami JavaScripta, funkcijami, orodji, blagom in značkami, sem prepričan, da boste z Gutenbergom hitro napredovali..
Kot smo že omenili, Gutenberg izpostavlja številne API-je, dovolj, da skoraj blokira. Izberete lahko, ali želite kodirajte svoj blok z navadnim starim JavaScriptom, JavaScriptom s sintakso ES6, React ali celo Vue.
Ideje in navdihi
Ustvaril sem zelo (zelo) preprost Gutenbergov blok, ki ga lahko najdete v skladišču našega Githubovega računa. Poleg tega sem sestavil tudi več skladišč, od koder lahko navdih navdihne pri gradnji kompleksnejšega bloka.
- Gutenblocks - Zbirka blokov Mathieu Viet, napisana v JavaScriptu s sintakso ES5
- Jetpack Gutenblocks Project - zbirka blokov, združenih v Jetpacku
- Seznam primerov izvedbe Gutenberga, vključno z Vue.js
Nadaljnje reference
- Uradni repozitorij Gutenberga
- Priročnik Gutenberga