Gutenberg Tot ce trebuie să știți despre ultimul editor WordPress
Gutenberg este un nou editor pentru WordPress, care va fi total înlocuiți editorul curent cu TinyMCE. Este un proiect ambițios care va schimba WordPress în multe moduri și ar afecta atât utilizatorii finali și dezvoltatorii obișnuiți, cât și cei care depind de ecranul editorului pentru lucrul pe WordPress. Iată cum arată.
Gutenberg introduce, de asemenea, o nouă paradigmă în WordPress numită “bloc”.
“bloc” este termenul abstract folosit pentru a descrie unități de marcare care sunt compuse din conținutul sau aspectul unei pagini Web. Ideea combină conceptele cu ceea ce se realizează astăzi cu WordPress coduri scurte, cod HTML personalizat și descoperire încorporată într-un singur API consistent și experiența utilizatorului.
Configurarea proiectului
Știind faptul că Gutenberg este construit pe partea de sus a React, unii dezvoltatori sunt îngrijorați de faptul că bariera este prea mare pentru dezvoltatorii de la începutul dezvoltării pentru Gutenberg.
Configurarea React.js ar putea fi destul de consumatoare de timp și de confuzie dacă tocmai ați început cu asta. Va trebui cel puțin transformatorul JSX, Babel, în funcție de codul dvs., este posibil să aveți nevoie de niște pluginuri Babel și un Bundler cum ar fi Webpack, Rollup sau Parcel.
din fericire, unii oameni din comunitatea WordPress s-au intensificat și încearcă să facă dezvoltarea lui Gutenberg cât mai ușoară posibil pentru toată lumea să o urmeze. Astăzi, avem un instrument care va genera un boilerplate Gutenberg așa putem începe să scriem codul imediat în loc să vă bateți cu instrumentele și configurațiile.
Creați Guten Block
crea-guten-bloc
este un proiect inițiat de Ahmad Awais. E o set de instrumente pentru configurația zero (# 0CJS
), care vă va permite să dezvoltați un bloc Gutenberg cu câteva stive moderne presetate, inclusiv React, Webpack, ESNext, Babel, ESLint și Sass. Urmați instrucțiunile pentru a începe să creați un Guten Block.
Folosind ES5 (ECMAScript 5)
Folosind toate aceste instrumente pentru a crea un simplu “Salut Lume” bloc poate părea prea mult. Dacă vă place să vă păstrați stivele înclinate, puteți să dezvoltați un bloc Gutenberg folosind un simplu ECMAScript 5 bun pe care deja îl puteți familiariza. Daca ai WP-CLI 1.5.0 instalat pe computer, puteți rula pur și simplu ...
wp bloc de schele[--Title = ] [--dashicon = ] [--categorie = ] [--mai] [--plugin = ] [--forta]
… la generați boilerplate-ul de bloc Gutenberg în plugin-ul sau tema. Această abordare este mai sensibilă, în special pentru pluginurile și temele existente pe care le-ați dezvoltat înainte de epoca Gutenberg.
În loc să creați un plugin nou pentru a găzdui blocurile Gutenberg, este posibil să doriți să integrați blocurile în pluginurile sau temele. Și pentru a face acest tutorial ușor de urmat pentru toată lumea, vom folosi ECMAScript 5 cu WP-CLI.
Înregistrarea unui nou bloc
Gutenberg este în prezent dezvoltat ca un plugin și va fi îmbinat cu WordPress 5.0 ori de câte ori echipa consideră că este gata. Deci, pentru moment, va trebui să o instalați din Pagina de pluginuri din wp-admin
. Odată ce ați instalat și l-ați activat, executați următoarea comandă în Terminal sau în Prompt Command dacă sunteți pe o mașină Windows.
wp seria blocului de schele --title = "Seria HTML5" - temă
Această comandă va genera o blocare a temei active în prezent. Blocul nostru va consta din următoarele fișiere:
. A¢Â ??  ?? â ??  ?? â ??  ?? serie âÂ? Â'Ã' Ã' â ??  ?? â ??  ?? â ??  ?? block.js âÂ? Â'Ã' Ã' â ??  ?? â ??  ?? â ??  ?? editor.css âÂ? Â'Ã' Ã' â ??  ?? â ??  ?? â ??  ?? style.css â ??  ?? â ??  ?? â ??  ?? series.php
Să încărcăm fișierul principal al blocurilor noastre în functions.php
din tema noastră:
dacă (function_exists ('register_block_type')) necesită get_template_directory (). '/Blocks/series.php';
Observați că închidem încărcarea fișierului cu condiționată. Acest lucru este asigurat compatibilitatea cu versiunea anterioară WordPress care blocul nostru este încărcat numai când Gutenberg este prezent. Blocul nostru ar trebui să fie acum disponibil în interfața Gutenberg.
Cum arată când introducem blocul.
API Gutenberg
Gutenberg introduce două seturi de API-uri pentru a înregistra un nou Bloc. Dacă ne uităm la series.php
, vom găsi următorul cod care înregistrează noul nostru Bloc. De asemenea încărcați foaia de stil și JavaScript pe front-end și editor.
register_block_type ('twentyseventeen / series', array ('editor_script' => 'series-block-editor', 'editor_style' => 'series-block-editor';
După cum vedem mai sus, blocul nostru este numit twentyseventeen / serie
, numele blocului trebuie să fie unic și să aibă un nume pentru a evita coliziunea cu celelalte blocuri aduse de celelalte pluginuri.
În plus, Gutenberg oferă un set de noi API-uri JavaScript pentru a interacționa cu “bloc” interfață în editor. Deoarece API este destul de abundent, ne vom concentra pe anumite specificații pe care cred că trebuie să le cunoașteți pentru a obține un simplu Gutenberg Block.
wp.blocks.registerBlockType
În primul rând, vom căuta wp.blocks.registerBlockType
. Această funcție este utilizată pentru înregistrați un nou “bloc” la redactorul Gutenberg. Aceasta necesită două argumente. Primul argument este numele blocului care trebuie să urmeze numele înregistrat în register_block_type
funcția din partea PHP. Al doilea argument este un Obiect care definește proprietățile blocului cum ar fi titlul, categoria și câteva funcții pentru a face interfața Block.
var registruBlockType = wp.blocks.registerBlockType; registerBlockType ('twentyseventeen / series', title: __ ('Seria HTML5'), categoria: 'widgets', keywords: ['html'], edit: function (props) );
wp.element.createElement
Această funcție vă permite să creați elementul în cadrul “bloc” în editorul postului. wp.element.createElement
funcția este în principiu o abstractizare a Reactului createElement ()
funcția acceptă astfel același set de argumente. Primul argument ia tipul de element, de exemplu un paragraf, a deschidere
, sau a div
așa cum se arată mai jos:
wp.element.createElement ( 'div');
Noi putem alias funcția într-o variabilă deci este mai scurta sa scriu. De exemplu:
var el = wp.element.createElement; el ( 'div');
daca tu preferați să utilizați noua sintaxă ES6, puteți face acest lucru și în felul următor:
const createElement: el = wp.element; el ( 'div');
Putem de asemenea adăugați atributele elementului la fel ca clasă
nume sau id
cu privire la al doilea parametru, după cum urmează:
var el = wp.element.createElement; el ('div', 'class': 'seria-html5', 'id': 'seria-html-post-id-001');
div
pe care am creat-o nu ar avea sens fără conținut. Noi putem adăugați conținutul în argumentul celui de-al treilea parametru:
var el = wp.element.createElement; el ('p', 'class': 'seria-html5', 'id': 'seria-html-post-id-001' pentru a vă ajuta să vă faceți un designer mai bun și / sau un dezvoltator. Faceți clic aici pentru a vedea mai multe articole din aceeași serie ");
wp.components
wp.components
conține o colecție de componente Gutenberg, după cum sugerează și numele. Aceste componente tehnice sunt componentele React personalizate care includ butonul, Popover, Spinner, Tooltip și o grămadă de alții. Noi putem reutilizați aceste componente în propriul Bloc. În exemplul următor, adăugăm o componentă de buton.
butonul var = wp.components.Button; el (Button, 'class': 'download-button',, 'Download');
atribute
Atributele reprezintă modul de stocare a datelor în blocul nostru, aceste date ar putea fi precum conținutul, culorile, aliniamentele, adresa URL etc. Putem obține atributele din proprietățile transmise pe Editați | ×()
funcție, după cum urmează:
edita: funcție (recuzită) var content = props.attributes.seriesContent; retur el ('div', 'class': 'series-html5', 'id': 'seria-html-post-id-001', conținut);
Pentru a actualiza atributele, folosim setAttributes ()
funcţie. În mod obișnuit, vom schimba conținutul pentru anumite acțiuni, cum ar fi când se face clic pe un buton, se introduce o intrare, se selectează o opțiune etc. În exemplul următor îl folosim pentru a adăuga da înapoi conținutul blocului nostru, în cazul în care sa întâmplat ceva neașteptat cu noi seriesContent
Atribut.
ediție: funcție (props) if (typeof props.attributes.seriesContent === 'undefined' ||! props.attributes.seriesContent) props.setAttribute contentContent: 'Hello World! ) var content = props.attributes.seriesContent; întoarcere [el ('div', 'class': 'series-html5', 'id': 'seria-html-post-id-001';
Salvarea blocului
Salvați()
funcționează în mod similar cu funcția Editați | ×()
, cu excepția faptului că definește conținutul blocului nostru pentru a fi salvat în baza de date postare. Salvarea conținutului blocului este destul de simplă, după cum vedem mai jos:
salvați: funcția (recuzită) if (! props ||! props.attributes.seriesContent) return; var content = props.attributes.seriesContent; întoarcere [el ('div', 'class': 'series-html5', 'id': 'seria-html-post-id-001';
Ce urmeaza?
Gutenberg va schimba ecosistemul WordPress în bine (sau poate și mai rău). Acesta permite dezvoltatorilor să adoptați un nou mod de a dezvolta pluginuri și teme WordPress. Gutenberg este doar un început. Curând “bloc” paradigma va fi extinsă la alte domenii ale WordPress, cum ar fi API-urile de setări și widget-urile.
Aflați JavaScript în profunzime; este singura modalitate de a intra în Gutenberg și de a rămâne relevanți pentru viitorul industriei WordPress. Dacă sunteți deja familiarizați cu elementele de bază JavaScript, cu ciudățenii, funcții, instrumente, bunuri și trupuri, sunt foarte sigur că veți ajunge la viteza cu Gutenberg.
După cum sa menționat, Gutenberg expune o abundență de API-uri, suficient pentru a face aproape orice pentru blocul tău. Puteți alege dacă doriți codați-vă blocul cu un JavaScript vechi obișnuit, JavaScript cu sintaxă ES6, React sau chiar Vue.
Idei și inspirații
Am creat un foarte (foarte) simplu Gutenberg Block pe care îl puteți găsi în depozitul contului nostru Github. Mai mult, am mai pus și un număr de depozite din care puteți inspira crearea unui bloc mai complex.
- Gutenblocks - O colecție de blocuri de Mathieu Viet scrisă în JavaScript cu sintaxa ES5
- Jetpack Gutenblocks Project - o colecție de blocuri incluse în Jetpack
- O listă de exemple de implementare Gutenberg, inclusiv cu Vue.js
Referințe ulterioare
- Reprezentanța oficială Gutenberg
- Gutenberg Handbook