Gutenberg Allt du behöver veta om WordPress senaste redaktör
Gutenberg är en ny editor för WordPress som kommer helt Byt ut den nuvarande TinyMCE-drivna redigeraren. Det är ett ambitiöst projekt som förmodligen kommer att ändra WordPress på många sätt och skulle påverka både vanliga slutanvändare och utvecklare, särskilt de som är beroende av redigeringsskärmen för att arbeta på WordPress. Så här ser det ut.
Gutenberg introducerar också ett nytt paradigm i WordPress som heter “Blockera”.
“Blockera” är den abstrakta termen som används för att beskriva enheter av markup som består av innehåll eller layout på en webbsida. Idén kombinerar begrepp som i WordPress idag vi uppnår med kortkoder, anpassad HTML och inbäddad upptäckt till ett enda konsekvent API och användarupplevelse.
Ställa in projektet
Att veta att Gutenberg är byggt ovanpå React, är vissa utvecklare oroliga över att barriären är för hög för utvecklare på grundnivå för att utveckla Gutenberg.
Att installera React.js kan vara ganska tidskrävande och förvirrande om du bara har börjat med det. Du behöver åtminstone JSX-transformatorn, Babel, beroende på din kod kan du behöva några Babel-plugins och en Bundler som Webpack, Rollup eller Parcel.
Lyckligtvis, vissa personer inom WordPress-community har intensifierats och försöker att utveckla Gutenberg så enkelt som möjligt för alla att följa. Idag har vi ett verktyg som kommer att generera en Gutenberg boilerplate så vi kan börja skriva kod direkt istället för att befruka med verktygen och konfigurationerna.
Skapa Guten Block
De skapa-guten-blocket
är ett initierat projekt av Ahmad Awais. Det är en nollkonfigurationsverktygssats (# 0CJS
) som tillåter dig att utveckla Gutenberg-blocket med några moderna staplar som förinställts, inklusive React, Webpack, ESNext, Babel, ESLint och Sass. Följ anvisningarna för att komma igång med Skapa Guten Block.
Använda ES5 (ECMAScript 5)
Använda alla dessa verktyg för att skapa en enkel “Hej världen” block kan tyckas bara för mycket. Om du gillar att hålla dina stackar luta, kan du faktiskt utveckla ett Gutenberg-block med en vanlig bra ol ECMAScript 5 som du kanske redan känner till. Om du har WP-CLI 1.5.0 installerad på din dator, du kan helt enkelt springa ...
wp ställningsblock[--Title = ] [--dashicon = ] [- category = ] [--theme] [--plugin = ] [--force]
... till generera Gutenberg block boilerplate till din plugin eller tema. Detta tillvägagångssätt är mer förnuftigt, särskilt för befintliga plugins och teman som du har utvecklat före Gutenberg-eran.
I stället för att skapa ett nytt plugin för att rymma Gutenberg-blocken, kanske du vill integrera blocken i dina plugins eller teman. Och för att göra denna handledning lätt att följa för alla, Vi använder ECMAScript 5 med WP-CLI.
Registrera ett nytt block
Gutenberg utvecklas för närvarande som ett plugin och kommer att slås samman med WordPress 5.0 när laget känner att det är klart. Så, för tillfället måste du installera den från Plugins sida i wp-admin
. När du har installerat och aktiverat det, kör följande kommando i Terminal eller Command Prompt om du är på en Windows-maskin.
wp ställningsblockserie - title = "HTML5 Series" --theme
Kommandot kommer att generera ett block till det aktuella aktiva temat. Vårt block består av följande filer:
. EN¢Â ??  ?? â ??  ?? â ??  ?? serie â     à â ??  ?? â ??  ?? â ??  ?? block.js â     à â ??  ?? â ??  ?? â ??  ?? editor.css â     à â ??  ?? â ??  ?? â ??  ?? style.css â ??  ?? â ??  ?? â ??  ?? series.php
Låt oss ladda huvudfilen till våra block i functions.php
av vårt tema:
om (function_exists ('register_block_type')) kräver get_template_directory (). '/Blocks/series.php';
Observera att vi bifogar filhanteringen med en villkorlig. Detta garanterar kompatibilitet med tidigare WordPress-version att vårt block bara laddas när Gutenberg är närvarande. Vårt block ska nu vara tillgängligt inom Gutenberg-gränssnittet.
Så här ser det ut när vi sätter in blocket.
Gutenberg APIs
Gutenberg introducerar två uppsättningar av API för att registrera ett nytt block. Om vi tittar på series.php
, Vi hittar följande kod som registrerar vårt nya Block. Det är också laddar stilarket och JavaScripts i fronten och redigeraren.
register_block_type ('twentyseventeen / series', array ('editor_script' => 'serieblockredigerare', 'editor_style' => 'serieblockredigerare', 'style' => 'serieblock'));
Som vi kan se ovan heter vårt block twentyseventeen / serie
, Blocknamnet måste vara unikt och namespaced för att undvika kollision med de andra blocken som tas med av de andra pluginsna.
vidare, Gutenberg tillhandahåller en uppsättning nya JavaScript API för att interagera med “Blockera” gränssnitt i redaktören. Eftersom API är ganska rikligt fokuserar vi på några detaljer som jag tror att du borde veta för att få ett enkelt men ändå fungerande Gutenberg Block.
wp.blocks.registerBlockType
Först ska vi titta på wp.blocks.registerBlockType
. Den här funktionen används till registrera en ny “Blockera” till Gutenberg-redaktören. Det kräver två argument. Det första argumentet är Blocknamnet som ska följa namn som är registrerat i register_block_type
funktion på PHP-sidan. Det andra argumentet är en Objekt som definierar blockegenskaperna gillar titel, kategori och ett par funktioner för att göra Block-gränssnittet.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType ('twentyseventeen / series', title: __ ('HTML5 Series'), kategori: 'widgets', nyckelord: ['html'], redigera: funktion (rekvisita) , spara: funktion (rekvisita) );
wp.element.createElement
Med den här funktionen kan du skapa elementet inom “Blockera” i postredigeraren. De wp.element.createElement
funktion är i grunden en abstraktion av reaktionen create ()
funktionen så accepterar den samma uppsättning argument. Det första argumentet tar elementets typ till exempel en punkt, a spänna
, eller a div
enligt nedanstående:
wp.element.createElement ( 'div');
Vi kan alias funktionen till en variabel så det är kortare att skriva. Till exempel:
var el = wp.element.createElement; el ( 'div');
Om du föredra att använda den nya ES6-syntaxen, det kan du också göra så här:
const createElement: el = wp.element; el ( 'div');
Vi kan också lägg till elementattributen så som klass
namn eller id
på den andra parametern enligt följande:
var el = wp.element.createElement; el ('div', 'class': 'serie-html5', 'id': 'serie-html-post-id-001');
De div
som vi skapade inte skulle ge mening utan innehållet. Vi kan lägg till innehållet på argumentet för den tredje parametern:
var el = wp.element.createElement; el ('p', 'class': 'series-html5', 'id': 'series-html-post-id-001', 'Denna artikel ingår i vår "HTML5 / CSS3 Tutorials Series" för att göra dig till en bättre designer och / eller utvecklare. Klicka här för att se fler artiklar från samma serie ");
wp.components
De wp.components
innehåller en samling av, som namnet antyder, Gutenberg-komponenterna. Dessa komponenter är tekniskt React anpassade komponenter som inkluderar knappen, popover, spinner, tooltip och en massa andra. Vi kan återanvända dessa komponenter till vårt eget block. I följande exempel lägger vi till en knappkomponent.
var knapp = wp.components.Button; el (knapp, 'class': 'download-button',, 'ladda ner');
attribut
Attributen är sättet att lagra data i vårt block, den här data kan vara som innehållet, färgerna, justeringarna, webbadressen etc. Vi kan få attributen från egenskaperna gått vidare på redigera()
funktion, enligt följande:
redigera: funktion (rekvisita) var content = props.attributes.seriesContent; returnera el ('div', 'class': 'series-html5', 'id': 'serie-html-post-id-001', innehåll);
För att uppdatera attributen använder vi setAttributes ()
fungera. Vanligtvis skulle vi ändra innehållet på vissa åtgärder, till exempel när en knapp klickas, en inmatning fylls, ett alternativ är valt, etc. I följande exempel använder vi den för att lägga till en Retirera Innehållet i vårt block om något hänt överraskande seriesContent
Attribut.
redigera: funktion (rekvisita) if (typ av props.attributes.seriesContent === 'undefined' ||! props.attributes.seriesContent) props.setAttribute (seriesContent: 'Hello World! ) var content = props.attributes.seriesContent; returnera [el ('div', 'class': 'series-html5', 'id': 'serie-html-post-id-001', innehåll),];
Spara blocken
De spara()
funktion fungerar på samma sätt som redigera()
, förutom att det definierar innehållet i vårt block för att spara till postdatabasen. Att spara blockinnehållet är ganska enkelt, vilket vi kan se nedan:
spara: funktion (rekvisita) om (! rekvisita ||! props.attributes.seriesContent) return; var content = props.attributes.seriesContent; returnera [el ('div', 'class': 'series-html5', 'id': 'serie-html-post-id-001', innehåll),];
Vad kommer härnäst?
Gutenberg kommer att ändra WordPress ekosystem till det bättre (eller möjligen det sämre). Det gör det möjligt för utvecklare att anta ett nytt sätt att utveckla WordPress-plugins och teman. Gutenberg är bara en början. Snart “Blockera” paradigmet kommer att utvidgas till andra områden i WordPress som Inställningar API och Widgets.
Lär dig JavaScript djupt; Det är det enda sättet att komma in i Gutenberg och vara relevant för framtiden i WordPress-branschen. Om du redan är bekant med JavaScript-grunderna, quirksna, funktionerna, verktygen, varorna och badsna, är jag verkligen säker på att du kommer att få fart med Gutenberg.
Som nämnts avslöjar Gutenberg ett överflöd av API, tillräckligt för att göra nästan vad som helst till ditt block. Du kan välja om du vill koda din Block med en vanlig gammal JavaScript, JavaScript med ES6-syntax, React eller till och med Vue.
Idéer och inspirationer
Jag har skapat ett mycket (väldigt) enkelt Gutenberg-block som du kan hitta i vårt Github-konto. Dessutom har jag också satt ihop ett antal förråd där du kan driva inspiration för att bygga ett mer komplext block.
- Gutenblocks - En samling av Blocks av Mathieu Viet skrivet i JavaScript med ES5 Syntax
- Jetpack Gutenblocks Project - en samling Blocks bundna i Jetpack
- En lista med exempel på Gutenberg Implementation inklusive med Vue.js
Ytterligare referens
- Gutenberg Official Repository
- Gutenberg Handbook