Gutenberg Kaikki mitä sinun tarvitsee tietää WordPressin uusimmasta editorista
Gutenberg on uusi editori WordPressille korvaa nykyinen TinyMCE-virtalähde. Se on kunnianhimoinen hanke, joka todennäköisesti muuttaa WordPressia monin tavoin ja vaikuttaisi sekä tavallisiin loppukäyttäjiin että kehittäjiin, erityisesti niihin, jotka ovat riippuvaisia editori-näytöstä työskentelemään WordPressissa. Tässä on, miten se näyttää.
Gutenberg esittelee myös uuden paradigman WordPressissa “Lohko”.
“Lohko” on abstrakti termi, jota käytetään kuvaamaan yksikköä jotka muodostavat verkkosivun sisällön tai ulkoasun. Idea yhdistää käsitteet siitä, mitä WordPressissa tänään saavutamme lyhytkoodit, mukautettu HTML-koodi ja upotuksen löytäminen yhdeksi johdonmukaiseksi API: ksi ja käyttäjäkokemus.
Projektin käyttöönotto
Tietäen, että Gutenberg on rakennettu Reactin päälle, jotkut kehittäjät ovat huolissaan siitä, että este on liian korkea aloittelijoille Gutenbergin kehittämiseen.
React.js: n käyttöönotto voi olla aika aikaa vievää ja hämmentävää, jos olet juuri aloittanut sen. Tarvitset ainakin JSX-muuntajan, Babelin, koodista riippuen saatat tarvita joitakin Babelin laajennuksia ja Bundler, kuten Webpack, Rollup tai Parcel.
Onneksi, jotkut WordPress-yhteisöistä tehostivat ja yrittävät tehdä Gutenbergin kehittämisen mahdollisimman helpoksi kaikille. Tänään meillä on työkalu, joka luo Gutenbergin kattilan voimme aloittaa kirjoittamisen heti sen sijaan, että käytettäisiin työkaluja ja kokoonpanoja.
Luo Guten-lohko
luoda-guten-lohko
on Ahmad Awaisin käynnistämä hanke. Se on a nolla-määritystyökalusarja (# 0CJS
) jonka avulla voit kehittää Gutenberg-lohkoa nykyaikaisilla kaseteilla, kuten React, Webpack, ESNext, Babel, ESLint ja Sass. Noudata ohjeita Luo Guten-lohko.
ES5: n käyttäminen (ECMAScript 5)
Kaikkien näiden työkalujen avulla voit luoda yksinkertaisen “Hei maailma” lohko saattaa tuntua aivan liian paljon. Jos haluat säilyttää pinoasi vähärasvaisen, voit itse kehittää Gutenberg-lohkon käyttämällä hyväkuntoista ECMAScript 5 -ohjelmaa, jonka olet jo tuntenut. Jos sinulla on WP-CLI 1.5.0 on asennettu tietokoneeseen, voit yksinkertaisesti ajaa…
wp rakennusteline[--Title = ] [- dashicon = ] [- luokka = ] [--theme] [- plugin = ] [- force]
… luo Gutenberg-lohkon boilerplate pluginille tai teemaan. Tämä lähestymistapa on järkevämpää erityisesti olemassa oleville plugineille ja teemoille, jotka olet kehittänyt ennen Gutenbergin aikakautta.
Sen sijaan, että luot uuden pluginin Gutenberg-lohkojen mukauttamiseksi, kannattaa ehkä yhdistää lohkot laajennuksiin tai teemoihin. Ja jotta tämä opetusohjelma olisi helppo seurata kaikille, käytämme ECMAScript 5: tä WP-CLI: llä.
Uuden lohkon rekisteröinti
Gutenberg on parhaillaan kehitetty pluginiksi, ja se yhdistetään WordPress 5.0: een aina, kun joukkue tuntee olevansa valmis. Joten toistaiseksi sinun on asennettava se Plugins-sivu wp-admin
. Kun olet asentanut ja aktivoinut sen, suorita seuraava komento Terminalissa tai komentokehotteessa, jos olet Windows-koneessa.
wp scaffold block sarja --title = "HTML5 Series" - teema
Tämä komento luo lohkon aktiiviseen teemaan. Lohko koostuu seuraavista tiedostoista:
. â ??  ?? â ??  ?? â ??  ?? sarja â        â ??  ?? â ??  ?? â ??  ?? block.js â        â ??  ?? â ??  ?? â ??  ?? editor.css â        â ??  ?? â ??  ?? â ??  ?? style.css â ??  ?? â ??  ?? â ??  ?? series.php
Let's ladataan lohkojen päätiedosto functions.php
teemastamme:
jos (function_exists ('register_block_type')) vaatii get_template_directory (). '/Blocks/series.php';
Huomaa, että liitämme tiedoston lataamisen ehdolliseen. Tämä takaa yhteensopivuus aiemman WordPress-version kanssa, että lohkomme on ladattu vain, kun Gutenberg on läsnä. Lohkon pitäisi nyt olla käytettävissä Gutenbergin käyttöliittymässä.
Näin se näyttää, kun asetamme lohkon.
Gutenbergin sovellusliittymät
Gutenberg esittelee kaksi API-ryhmää uuden lohkon rekisteröimiseksi. Jos katsomme series.php
, löydämme seuraavan koodin, joka rekisteröi uuden lohkon. Se myös lataa tyylisivu ja JavaScripts etupäähän ja editoriin.
register_block_type ('twentyseventeen / series', array ('editor_script' => 'series-block-editor', 'editor_style' => 'series-block-editor', 'style' => 'series-block',));
Kuten edellä näemme, meidän lohkomme on nimetty twentyseventeen / sarja
, Lohkon nimen on oltava ainutlaatuinen ja nimikyltti, jotta vältetään törmäykset muiden laajennusten tuomien muiden lohkojen kanssa.
Lisäksi, Gutenberg tarjoaa joukon uusia JavaScript-sovellusliittymiä vuorovaikutuksessa “Lohko” liitäntä editorissa. Koska sovellusliittymä on varsin runsas, keskitymme joihinkin erityispiirteisiin, joiden mielestä sinun pitäisi tietää, että saat yksinkertaisen, mutta toimivan Gutenberg-lohkon.
wp.blocks.registerBlockType
Ensinnäkin aiomme tutkia wp.blocks.registerBlockType
. Tätä toimintoa käytetään rekisteröidä uusi “Lohko” Gutenbergin editoriin. Se vaatii kaksi argumenttia. Ensimmäinen argumentti on lohkon nimi, jonka tulisi seurata register_block_type
toiminto PHP-puolella. Toinen argumentti on Lohko-ominaisuuksia määrittävä kohde kuten otsikko, luokka ja pari toimintoa, jotta Block-liitäntä saadaan aikaan.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType ('twentyseventeen / series', title: __ ('HTML5-sarja'), luokka: "widgetit", avainsanat: ['html'], muokkaa: toiminto (rekvisiitta) , tallenna: toiminto (rekvisiitta) );
wp.element.createElement
Tämän toiminnon avulla voit luoda elementin “Lohko” postin editorissa. wp.element.createElement
toiminto on pohjimmiltaan reaktion otto createElement ()
toiminto hyväksyy sen, että se hyväksyy samat argumentit. Ensimmäinen argumentti ottaa elementin tyypin esimerkiksi kohdan, a jänneväli
, tai a div
kuten alla:
wp.element.createElement ( 'div');
Me voimme alias toiminto muuttujaksi joten se on lyhyempi kirjoittaa. Esimerkiksi:
var el = wp.element.createElement; el ( 'div');
Jos sinä mieluummin käyttää uutta ES6-syntaksia, voit myös tehdä sen näin:
const createElement: el = wp.element; el ( 'div');
Voimme myös lisää elementtimääritteet kuten luokka
nimi tai id
toinen parametri seuraavasti:
var el = wp.element.createElement; el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001'));
div
että luomamme ei olisi järkevää ilman sisältöä. Me voimme lisää sisältö kolmannen parametrin argumenttiin:
var el = wp.element.createElement; el ('p', 'class': 'series-html5', 'id': 'series-html-post-id-001'), 'Tämä artikkeli on osa "HTML5 / CSS3-opetusohjelmien sarjaa" - omistettu auttaa sinua tekemään paremmaksi suunnittelijaksi ja / tai kehittäjäksi. Klikkaa tästä nähdäksesi lisää saman sarjan artikkeleita ”);
wp.components
wp.components
sisältää Gutenbergin komponenttien kokoelman, kuten nimikin viittaa. Nämä komponentit ovat teknisesti React custom -komponentteja, joihin kuuluu Button, Popover, Spinner, Tooltip ja joukko muita. Me voimme käytä näitä osia uudelleen omaan lohkoon. Seuraavassa esimerkissä lisätään painikekomponentti.
var Button = wp.components.Button; el (painike, 'class': 'download-button', ►, 'Download');
määritteet
Ominaisuudet ovat tapa tallentaa tiedot lohkoon, nämä tiedot voivat olla sisältöä, värejä, kohdistuksia, URL-osoitteita jne. Saatamme attribuutit Ominaisuudet-välilehdeltä muokata()
toiminto:
muokkaa: toiminto (rekvisiitta) var content = props.attributes.seriesContent; palaa el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001'), sisältö);
Jos haluat päivittää määritteet, käytämme setAttributes ()
toimia. Tyypillisesti muuttaisimme tietyn toiminnon sisältöä, kuten kun painiketta napsautetaan, tulo täytetään, vaihtoehto valitaan jne. Seuraavassa esimerkissä käytämme sitä lisäämään perääntyä lohkomme sisällöstä, jos tapahtui jotain odottamatonta seriesContent
ominaisuus.
muokkaa: toiminto (rekvisiitta) if (tyyppi props.attributes.seriesContent === 'undefined' ||! props.attributes.seriesContent) props.setAttribute (seriesContent: Hello World! Tässä on varmuuskopio-sisältö. ' ) var content = props.attributes.seriesContent; paluu [el ('div', 'class': 'series-html5', 'id': 'sarja-html-post-id-001'), sisältö),];
Lohkon tallentaminen
Tallentaa()
toiminto toimii samalla tavalla kuin muokata()
, paitsi se määrittelee lohkon sisällön tallentaaksesi postitietokantaan. Lohkon sisällön tallentaminen on melko yksinkertaista, kuten seuraavassa:
tallenna: toiminto (rekvisiitta) if (! rekvisiitta ||! props.attributes.seriesContent) paluu; var content = props.attributes.seriesContent; paluu [el ('div', 'class': 'series-html5', 'id': 'sarja-html-post-id-001'), sisältö),];
Mitä seuraavaksi?
Gutenberg muuttaa WordPress-ekosysteemiä parempaan (tai mahdollisesti huonompaan). Sen avulla kehittäjät voivat ottaa käyttöön uusi tapa kehittää WordPress-laajennuksia ja teemoja. Gutenberg on vain alku. Pian “Lohko” paradigmaa laajennetaan muihin WordPress-alueisiin, kuten Asetusten sovellusliittymiin ja widgetiin.
Opi JavaScript syvästi; se on ainoa tapa päästä Gutenbergiin ja pysyä tärkeänä WordPress-alan tulevaisuudessa. Jos olet jo perehtynyt JavaScript-perusasioihin, quirksiin, toimintoihin, työkaluihin, tavaroihin ja pahoihin, olen varma, että nouset nopeuteen Gutenbergin kanssa.
Kuten mainittiin, Gutenberg paljastaa runsaasti API: ita, joka riittää tekemään melkein mitä tahansa Blockiin. Voit valita, haluatko koodaa lohko, jossa on vanha vanha JavaScript, JavaScript, jossa on ES6-syntaksi, React tai jopa Vue.
Ideoita ja inspiraatioita
Olen luonut hyvin (hyvin) yksinkertaisen Gutenberg-lohkon, jonka löydät Github-tilisi arkistosta. Lisäksi olen koonnut myös useita arkistoja, joista voit inspiroida monimutkaisemman lohkon rakentamista.
- Gutenblocks - Mathieu Vietin lohkojen kokoelma, joka on kirjoitettu JavaScriptissä ES5-syntaksilla
- Jetpack Gutenblocks Project - kokoelma lohkoja, jotka on yhdistetty Jetpackiin
- Luettelo esimerkkejä Gutenbergin toteutuksesta, mukaan lukien Vue.js
Lisäohje
- Gutenbergin virallinen arkisto
- Gutenbergin käsikirja