Gutenberg Minden, amit tudnia kell a WordPress-ről
Gutenberg egy új szerkesztő a WordPress számára, amely teljesen cserélje ki az aktuális TinyMCE-meghajtású szerkesztőt. Ez egy ambiciózus projekt, amely vitathatatlanul megváltoztatja a WordPress-et, és mind a rendszeres végfelhasználókat, mind a fejlesztőket érinti, különös tekintettel azokra, akik a WordPressen dolgozó szerkesztőképernyőtől függenek. Itt van, hogyan néz ki.
Gutenberg új paradigmát is bemutat a WordPressben “Blokk”.
“Blokk” az elvont kifejezést használjuk mértékegység amelyek egy weboldal tartalmát vagy elrendezését alkotják. Az ötlet ötvözi azokat a fogalmakat, amelyeket a WordPress ma elértünk rövid kódokat, egyéni HTML-kódokat és egy felfedezés beágyazását egyetlen egységes API-ba és felhasználói élmény.
A projekt beállítása
Tudva, hogy Gutenberg épül a React tetején, néhány fejlesztő aggódik, hogy a túl magas a belépő szintű fejlesztők számára a Gutenberg fejlesztéséhez.
A React.js üzembe helyezése elég időigényes és zavaró lehet, ha éppen elkezdené vele. Legalább szüksége lesz a JSX transzformátorra, a Babelre, attól függően, hogy a kódjától függően szükség lehet néhány Babel bővítményre és egy Bundlerre, mint például a Webpack, Rollup vagy Parcel.
szerencsére, néhány ember a WordPress közösségen belül felgyorsult és igyekeznek a Gutenberg fejlesztését a lehető legegyszerűbben mindenki számára követni. Ma van egy olyan eszközünk, amely egy Gutenberg-főtáblát hoz létre azonnal elkezdhetjük a kód írását a szerszámok és a konfigurációk helyett.
Guten blokk létrehozása
A create-Guten-block
Ahmad Awais kezdeményező projektje. Ez egy nulla konfigurációs szerszámkészlet (# 0CJS
), amely lehetővé teszi a Gutenberg-blokk kialakítását néhány korszerű, előre beállított köteggel, például React, Webpack, ESNext, Babel, ESLint és Sass. Kövesse az utasításokat a Guten blokk létrehozásához.
Az ES5 használata (ECMAScript 5)
Mindezen eszközök használata egyszerű létrehozásához “Helló Világ” a blokk túl soknak tűnhet. Ha szeretné megtartani a halmozott lapokat, valójában egy Gutenberg-blokkot készíthet, ha egy egyszerű, egyszerű ECMAScript 5-et használ, amelyet már ismerhet. Ha van A számítógépre telepített WP-CLI 1.5.0, egyszerűen futhatsz ...
wp állványblokk[--Title = ] [--dashicon = ] [- kategória = ] [--theme] [--plugin = ] [--erő]
… nak nek generálja a Gutenberg blokk boilerplate-t a bővítményéhez vagy a témához. Ez a megközelítés ésszerűbb, különösen a Gutenberg-korszak előtt kifejlesztett meglévő bővítmények és témák esetében.
Ahelyett, hogy új plugint hozna létre a Gutenberg blokkok befogadására, érdemes lehet a blokkokat beépíteni a bővítményeivel vagy a témákkal. És hogy ez a bemutató mindenki számára könnyen követhető legyen, az ECMAScript 5-öt WP-CLI-vel fogjuk használni.
Új blokk regisztrálása
A Gutenberg jelenleg bővítményként van kifejlesztve, és összeolvad a WordPress 5.0-ba, amikor a csapat úgy érzi, készen áll. Tehát egyelőre telepítenie kell azt a Bővítmények oldala wp-admin
. Miután telepítette és aktiválta, futtassa a következő parancsot a terminálon vagy a parancssorban, ha Windows-gépen van.
wp scaffold blokk sorozat --title = "HTML5 Series" - a téma
Ez a parancs létrehoz egy blokkot az aktuálisan aktív témához. Blokkunk a következő fájlokból áll:
. â ??  ?? â¢Â ??  ?? â¢Â ??  ?? sorozat â       à ¢ ??  ?? â¢Â ??  ?? â¢Â ??  ?? block.js â       à ¢ ??  ?? â¢Â ??  ?? â¢Â ??  ?? editor.css â       à ¢ ??  ?? â¢Â ??  ?? â¢Â ??  ?? style.css â ??  ?? â¢Â ??  ?? â¢Â ??  ?? series.php
Töltsük be a blokkok fő fájlját a functions.php
témánk:
if (function_exists ('register_block_type')) szükséges get_template_directory (). '/Blocks/series.php';
Figyeljük meg, hogy a fájl betöltését feltételes feltételekkel csatoljuk. Ez biztosítja kompatibilitás a korábbi WordPress verzióval, hogy blokkunk csak akkor töltődik be, amikor Gutenberg jelen van. A blokkunknak most elérhetőnek kell lennie a Gutenberg felületen.
Így néz ki, amikor behelyezzük a blokkot.
Gutenberg API-k
Gutenberg két API-t vezet be új blokk regisztrálásához. Ha megnézzük a series.php
, megtaláljuk a következő kódot, amely regisztrálja az új blokkunkat. Az is betölti a stíluslapot és a JavaScripteket az előlapon és a szerkesztőn.
register_block_type ('twentyseventeen / series', tömb ('editor_script' => 'series-block-editor', 'editor_style' => 'series-block-editor', 'style' => 'series-block',));
Ahogy fent láthatjuk, a blokkunk neve twentyseventeen / sorozat
, a blokk nevének egyedinek kell lennie, és el kell látnia a névtáblákat, hogy elkerülje az ütközést a többi blokk által a többi blokkkal.
Továbbá, A Gutenberg új JavaScript API-kat kínál, amelyekkel együttműködhet a “Blokk” felület a szerkesztőben. Mivel az API eléggé bőséges, néhány olyan sajátosságra fogunk összpontosítani, amelyekről úgy vélem, tudnod kell, hogy egy egyszerű, mégis működő Gutenberg blokkot kapsz.
wp.blocks.registerBlockType
Először is meg fogjuk vizsgálni wp.blocks.registerBlockType
. Ezt a funkciót használják regisztráljon “Blokk” a Gutenberg-szerkesztőhöz. Két érvre van szükség. Az első érv az a blokk neve, amelyet követnie kell a névben regisztrált névnek register_block_type
funkció a PHP oldalán. A második érv egy A blokk tulajdonságait meghatározó objektum mint a cím, kategória és néhány funkció a Blokk interfész megjelenítéséhez.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType ('twentyseventeen / series', title: __ ('HTML5 sorozat'), kategória: "widgetek", kulcsszavak: ['html'], szerkesztés: funkció (kellékek) , mentés: funkció (kellékek) );
wp.element.createElement
Ez a funkció lehetővé teszi, hogy az elemet a “Blokk” a szerkesztőben. A wp.element.createElement
A függvény alapvetően a Reagencia absztrakciója createElement ()
funkcióval, ezért elfogadja ugyanazokat az érveket. Az első argumentum az elem típusát, például egy bekezdést vesz fel, a arasz
, vagy a div
az alábbiak szerint:
wp.element.createElement ( 'div');
Tudunk varázsolja a függvényt változóvá így rövidebb írni. Például:
var el = wp.element.createElement; El ( 'div');
Ha te előnyben részesíti az új ES6 szintaxist, így is megteheti:
const createElement: el = wp.element; El ( 'div');
Mi is adja hozzá az elem attribútumokat mint például a osztály
név vagy id
a második paraméterre az alábbiak szerint:
var el = wp.element.createElement; el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001'));
A div
a létrehozott tartalom nem lenne értelme a tartalom nélkül. Tudunk adja hozzá a tartalmat a harmadik paraméter argumentumához:
var el = wp.element.createElement; el ('p', 'class': 'series-html5', 'id': 'series-html-post-id-001'), 'Ez a cikk a "HTML5 / CSS3 oktatóanyagok sorozatának" része - dedikált a jobb tervező és / vagy fejlesztő létrehozásához kattintson ide, ha több cikket szeretne látni ugyanabból a sorozatból ”);
wp.components
A wp.components
a Gutenberg komponensek gyűjteménye, amint azt a neve is jelzi. Ezek az összetevők technikailag React egyéni összetevők, amelyek magukban foglalják a Button, Popover, Spinner, Tooltip és egy csomó mást. Tudunk ezeket az összetevőket újra felhasználhatja saját blokkunkba. A következő példában egy gombelemet adunk hozzá.
var Button = wp.components.Button; el (Gomb, 'class': 'download-button', ►, 'Download');
attribútumok
Az attribútumok az adatok tárolásának módja a blokkban, ezek az adatok lehetnek például a tartalom, a színek, az igazítások, az URL-cím stb. szerkesztés ()
funkció:
szerkesztés: funkció (kellékek) var content = props.attributes.seriesContent; vissza el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001'), tartalom);
Az attribútumok frissítéséhez a setAttributes ()
funkció. Jellemzően bizonyos műveletek tartalmát megváltoztatjuk, például ha egy gombot rákattintunk, egy bemenetet betöltünk, egy opciót választunk, stb. A következő példában egy üzemszüneti blokk tartalmával, ha valami váratlan történt seriesContent
Tulajdonság.
szerkesztés: függvény (kellékek) if (type.supports.seriesContent === 'undefined' ||! props.attributes.seriesContent) props.setAttribute (seriesContent: 'Hello World! Itt van a tartalék tartalom.' ) var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001'), tartalom),];
A blokk mentése
A mentés()
funkció hasonlóan működik szerkesztés ()
, kivéve, hogy meghatározza a blokk tartalmát, hogy elmentse a postai adatbázisba. A blokk tartalma mentése meglehetősen egyszerű, ahogy az alábbiakban láthatjuk:
mentés: funkció (kellékek) if (! kellékek ||! props.attributes.seriesContent) visszatér; var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001'), tartalom),];
Mi a következő lépés?
Gutenberg megváltoztatja a WordPress ökoszisztémáját a jobbra (vagy esetleg rosszabbra). Lehetővé teszi a fejlesztők számára fogadjon el egy új módszert a WordPress bővítmények és témák fejlesztésére. Gutenberg csak egy kezdet. Hamarosan a “Blokk” A paradigmát a WordPress más területeire is kiterjeszti, például a Beállítások API-kat és a Widgeteket.
Ismerje meg a JavaScriptet mélyen; ez az egyetlen módja, hogy bejuthasson Gutenbergbe és maradjon releváns a jövő szempontjából a WordPress iparágban. Ha már ismeri a JavaScript alapjait, a quirks-eket, a funkciókat, az eszközöket, az árukat és a rosszokat, nagyon biztos vagyok benne, hogy felgyorsul Gutenberg-szel.
Mint már említettük, Gutenberg rengeteg API-t tesz ki, ami elég ahhoz, hogy szinte bármit tegyen a blokkjára. Kiválaszthatja, hogy kódolja a blokkját egy egyszerű régi JavaScript-szel, JavaScript-rel ES6 szintaxissal, React vagy Vue.
Ötletek és inspirációk
Létrehoztam egy nagyon (nagyon) egyszerű Gutenberg-blokkot, amely megtalálható a Github-fiókunk tárolójában. Továbbá számos tárolót is összeállítottam, ahonnan bonyolultabb blokk építésével inspirálhatsz.
- Gutenblocks - A Mathieu Viet blokkok gyűjteménye, melyet JavaScript-ben írtak az ES5 szintaxisával
- Jetpack Gutenblocks Project - a Jetpack-ba csomagolt blokkok gyűjteménye
- A Gutenberg implementáció példáinak listája, beleértve a Vue.js-ot is
További információk
- Gutenberg hivatalos tárolója
- Gutenberg kézikönyv