Gutenberg este o interfață de editare nouă, care va schimba modul în care oamenii folosesc WordPress. Sunteți pregătiți pentru această schimbare? Dacă sunteți un dezvoltator de pluginuri, trebuie să vă pregătiți pluginurile personale pentru Gutenberg.
În cazul în care nu ați auzit încă despre Gutenberg, acesta este un nou editor WordPress care va schimba modul în care scrieți conținut. Sub Gutenberg, setat să devină parte a programului WordPress core în versiunea 5, fiecare element din conținutul dvs. va fi un bloc (de tip paragraf, imagine, blockquote, heading și așa mai departe).
Chiar și metaboxele nu vor fi la fel.
Metaboxurile simple ar trebui să funcționeze cu Gutenberg din cutie, deși ele vor fi afișate diferit. Cu toate acestea, dacă aveți metaboxe complexe, cum ar fi cel din pluginul Yoast SEO, atunci va trebui să-l testați împotriva lui Gutenberg și poate să creați unul nou doar pentru Gutenberg.
Deci, care pluginuri trebuie actualizate pentru Gutenberg? Plugin-uri cu:
Există două abordări pe care le putem lua ca dezvoltatori de plugin-uri: a sustine Gutenberg sau dezactivați Gutenberg. Sprijinirea lui Gutenberg ar însemna că vom depune eforturi suplimentare pentru a refăcrarea codul nostru (poate chiar duplicarea unor astfel de coduri), astfel încât utilizatorii noștri de plugin-uri să nu aibă nici o dificultate în utilizarea acestuia.
Dacă ne hotărâm să nu-l susținem pe Gutenberg, atunci trebuie să-l dezactivăm pe Gutenberg. Putem dezactiva Gutenberg complet sau numai în cazul în care plugin-ul nostru este utilizat. În această secțiune, voi lua plugin-ul meu "Simple Giveaways" care are un post post particularizat și metaboxe.
Acesta este un lucru pe care nu l-aș recomanda să fac din plugin-ul tău. În schimb, este posibil să doriți să informați utilizatorii plugin-ului cu o notificare de administrator că pluginul dvs. nu funcționează cu Gutenberg, astfel încât să poată reveni la editorul clasic.
Revenirea se poate face prin instalarea pluginului Classic Editor. Sau puteți crea o nouă setare pentru pluginul dvs. și faceți acest lucru pentru al dezactiva:
Acest filtru poate fi găsit în funcție
gutenberg_can_edit_post_type
care este folosit pentru a verifica dacă Gutenberg poate fi încărcat pe tipul respectiv de post. Dacă întotdeauna ne întoarcemfals
, atunci înseamnă că nu vom susține deloc Gutenberg.Dezactivarea tipului Gutenberg pe tip de postare
Dacă pluginul dvs. are un tip de post personalizat, atunci este posibil să doriți să dezactivați Gutenberg pentru tipul respectiv de postare. Pentru a dezactiva Gutenberg pentru tipul dvs. de post particularizat, puteți să vă modificați configurația tipului de postare.
Suport pentru editori
Gutenberg nu se va încărca dacă tipul postului nu suportă editorul. Acest lucru este potrivit dacă tipul dvs. de post personalizat nu are nevoie de editor.
__ ('Simple Giveaways', 'giveasap'), 'labels' => etichete $, 'supports' => array ('title', // 'editor', 'hierarchical' fals, //… ); register_post_type ('giveasap', $ args);REST API Support
Poate că aveți nevoie de editor, dar nu aveți nevoie de el în API-ul REST? Gutenberg nu se va încărca dacă nu susțineți API-ul REST. Similar cu exemplul de mai sus, vom face acest lucru în configurația tip post.
__ ('Giveaways simple', 'giveasap'), // ... 'show_in_rest' => false, // Dezactivați Gutenberg // ...); register_post_type ('giveasap', $ args);Prin setarea parametrului
show_in_rest
lafals
, vom dezactiva Gutenberg pentru acel tip de post.Suport tip post
Putem folosi filtrul menționat anterior pentru a dezactiva Gutenberg numai pentru tipul nostru de post personalizat.
Cu acest cod, verificăm dacă suntem pe tipul de post personalizat. Dacă suntem, atunci reveniți falsi. Acest lucru nu va afecta alte tipuri de postări.
Dezactivarea lui Gutenberg cu metaboxuri
Dacă aveți metaboxe complexe, ar putea dura prea mult pentru a crea o versiune a plugin-ului dvs. care ar putea susține Gutenberg. Dacă este așa, puteți dezactiva Gutenberg până când veți avea ceva care să lucreze cu Gutenberg.
Pentru a dezactiva Gutenberg cu metaboxele, trebuie să le definiți ca fiind incompatibil.
fals, ) );Dacă doriți să aflați cum să sprijiniți Gutenberg cu metaboxuri complexe, va trebui să învățați cum să le convertiți într-un bloc și cum să le salvați. Asigurați-vă că verificați manualul WordPress Gutenberg pentru asta.
Cum să sprijine Gutenberg
O opțiune mai bună decât dezactivarea lui Gutenberg este să o susțină!
Din moment ce metaboxele vor ieși probabil din cutie, nu veți avea de făcut prea multe aici (dacă nu sunteți avansați, așa cum am învățat mai devreme). Atunci când îl sprijiniți pe Gutenberg, veți lucra mai ales la crearea de noi blocuri pentru codurile scurte și chiar widget-urile.
Codurile scurte vor funcționa și din cutie. Dar pentru a oferi o experiență mai bună pentru utilizatori, probabil ar trebui să faceți blocuri pentru ei.
Puteți crea blocuri statice și dinamice. Blocurile statice vor fi complet scrise în JavaScript, iar HTML-ul afișat va fi salvat în conținut.
Blocurile dinamice sunt puțin diferite. De asemenea, va trebui să creați partea JavaScript, astfel încât să funcționeze cu editorul Gutenberg. Dar, de asemenea, veți defini o funcție PHP care va fi apelată pentru a fi afișată atunci când se afișează acel conținut pe partea frontală a site-ului dvs..
Pentru a înțelege blocurile statice și dinamice, să analizăm un exemplu simplu - un bloc de alertă simplu - și să îl implementăm în ambele sensuri.
Înregistrarea unui bloc
Pentru a înregistra un bloc, mai întâi trebuie să îl definim în PHP și apoi în JavaScript.
"guten-tuts",)); // Blocul nostru dinamic. register_block_type ('guten-tuts / alertdynamic', array ('render_callback' => 'guten_tuts_dynamic_alert')); add_action ('init', 'guten_tuts_block');Când înregistram un script, trebuie să definim dependențele aici.
wp-bloc
șiwp element
dependențele sunt cele de care avem nevoie atunci când creăm blocuri.Nu voi intra într-o prezentare detaliată a blocurilor sau API ca un întreg. Pentru a înțelege mai mult acest lucru, trebuie să citiți manualul Gutenberg.
Fișier blocare JavaScript
Începutul fișierului nostru JavaScript block.js va avea aceasta:
var el = wp.element.createElement, __ = wp.i18n .__, registerBlockType = wp.blocks.registerBlockType, RichText = wp.blocks.RichText, blockStyle = backgroundColor: '# 900', culoare: '#fff', padding: '20px';Bloc static
Acum, să definim blocul nostru static. Deoarece alerta noastră va fi doar text, avem nevoie de un atribut:
text
. În a noastrăEditați | ×
(folosită în Editor), vom avea unRichText
bloc. Acest bloc ne permite să inserăm textul, să adăugăm stiluri și așa mai departe.Definiția atributului nostru
text
îi va spune lui Gutenberg să alunge textul în interiorul luidiv
. Spunem, de asemenea, lui Gutenberg că acesta va fi o gamă de elemente de copil. Doar de exemplu, astaar converti într - o serie de trei elemente: "text em", "alt text" și "text îndrăzneț" împreună cu structura lor, cum ar fi
em text alt text îndrăzneț textem
șiîndrăzneţ
.Conversia acestor atribute are loc la ieșirea din
Salvați
metodă.(de exemplu: '', '', '', '' '', ' (text: newText); return (el) (RichText) , tagName: 'div', className: props.className, onChange: onChangeText, valoare: conținut, isSelected: props.isSelected, stil: blockStyle); save: function (recuzită) var text = props.attributes. text; retur el ('div', stil: blockStyle, className: props.className, text);,);Bloc dinamic
Blocul dinamic va avea
Editați | ×
metoda, darSalvați
metoda va reveninul
. Nu avem nevoie de eleSalvați
aici pentru că vom defini o funcție de retur PHP pentru a face blocul dinamic pe front.Am înregistrat un apel invers
guten_tuts_dynamic_alert
inainte de:'guten_tuts_dynamic_alert')); // ...Acest apel de apel va primi de asemenea un parametru
atributele $
. Aceasta va fi o matrice a tuturor atributelor înregistrate. Comportamentul este foarte similar cu înregistrarea unui scurtcod.Functia
guten_tuts_dynamic_alert
va arata astfel:Rezultatul este doar a
div
element cu un text.Din câte vă pot spune, nu putem folosi RichText pentru blocurile dinamice deoarece atributele nu se actualizează. Dacă mă înșel, spuneți-mi în comentariile!
Vom folosi un regulat
intrare
pentru a introduce textul alertei. Din moment ce nu avemSalvați
aici am definit atributultext
ca un șir simplu.(de exemplu: 'text', 'type': 'string', selector: 'text' 'div',, edita: funcția (props) var content = props.attributes.text; blockStyle ['width'] = '100%'; ; props.setAttributes (text: newText); return el ('introducere', className: props.className + 'widefat', peChange: onChangeText, value: content, isSelected: props.isSelected, style: blockStyle) ;, salvați: funcția (recuzită) return null;,);Veți vedea un obișnuit
intrare
care are o culoare de fundal și stil diferit deRichText
bloc. Desigur, puteți schimba acest lucru și puteți imita aceleași stiluri.Deoarece alerta noastră de randare PHP are o culoare de fundal diferită de cea definită în codul nostru JavaScript, putem vedea și diferența pe partea din față.
Concluzie
Pregătirea pluginului pentru Gutenberg poate fi o mulțime de lucruri. Dar din moment ce Gutenberg este la fel de extensibil ca restul WordPress, aveți o mulțime de flexibilitate pentru a sprijini caracteristicile plugin-ului dvs. în Gutenberg.
Începeți astăzi instalând Gutenberg și testați-l împotriva pluginului.