Гутенберг Всичко, което трябва да знаете за последния редактор на WordPress
Гутенберг е нов редактор за WordPress, който ще бъде напълно замени текущия TinyMCE-задвижван редактор. Това е амбициозен проект, който вероятно ще промени WordPress по много начини и ще засегне както редовните крайни потребители, така и разработчиците, особено тези, които зависят от редакторския екран за работа с WordPress. Ето как изглежда.
Гутенберг въвежда и нова парадигма в WordPress “блок”.
“блок” е абстрактният термин, използван за описание единици за маркиране които са съставени от съдържанието или оформлението на дадена уеб страница. Идеята съчетава концепции за това какво в днешния WordPress постигаме кратки кодове, персонализиран HTML код и вграждане на откритие в единен последователен API и потребителски опит.
Създаване на проекта
Знаейки факта, че Гутенберг е построен на React, някои разработчици се притесняват, че бариерата е твърде висока за разработчиците на начално ниво за развитие на Гутенберг.
Създаването на React.js може да отнеме доста време и да обърква, ако току-що започнете. Ще трябва поне JSX трансформатор, Babel, в зависимост от кода ви, може да имате нужда от някои Babel приставки и Bundler като Webpack, Rollup или Parcel.
за щастие, някои хора в общността на WordPress се засилиха и се опитват да направят развитието на Гутенберг възможно най-лесно за всеки, който да го последва. Днес ние имаме инструмент, който ще генерира такъв модел на Гутенберг веднага можем да започнем да пишем код вместо да се заблуждават с инструментите и конфигурациите.
Създайте блок Guten
Най- създадат-Guten-блок
е инициативен проект на Ахмад Авайс. Това е комплект инструменти с нулева конфигурация (# 0CJS
), което ще ви позволи да развиете блока на Гутенберг с някои модерни стикове, включително React, Webpack, ESNext, Babel, ESLint и Sass. Следвайте инструкциите, за да започнете с Create Guten Block.
Използване на ES5 (ECMAScript 5)
Използване на всички тези инструменти за създаване на прост “Здравей свят” блок може да изглежда твърде много. Ако искате да запазите стековете си постно, всъщност можете да развиете блок на Гутенберг, използвайки обикновен добър ECMAScript 5, с който може би вече сте запознати. Ако имате WP-CLI 1.5.0 е инсталиран на вашия компютър, можете просто да стартирате ...
wp скеле блок[--Title = ] [--dashicon = ] [--category = ] [- тема] [--plugin = ] [--force]
… да се генерирайте шаблона на блока Gutenberg към плъгина или темата. Този подход е по-разумен, особено за съществуващи приставки и теми, които сте разработили преди ерата на Гутенберг.
Вместо да създавате нов плъгин, който да побере блоковете на Гутенберг, може да искате да интегрирате блоковете в плъгините или темите. И за да направите този урок лесен за следване за всички, ще използваме ECMAScript 5 с WP-CLI.
Регистриране на нов блок
В момента Гутенберг е разработен като плъгин и ще бъде обединен с WordPress 5.0, когато екипът се чувства готов. Така че за момента ще трябва да го инсталирате от Страница за добавки в WP-администратор
. След като го инсталирате и активирате, изпълнете следната команда в терминала или командния ред, ако сте на машина с Windows.
wp scaffold block series --title = "Серия HTML5" - тема
Тази команда ще генерира блок към текущо активната тема. Нашият блок ще се състои от следните файлове:
. âА ?? а ?? âА ?? а ?? âА ?? а ?? серия âA? Â'Ã' Ã' âА ?? а ?? âА ?? а ?? âА ?? а ?? block.js âA? Â'Ã' Ã' âА ?? а ?? âА ?? а ?? âА ?? а ?? editor.css âA? Â'Ã' Ã' âА ?? а ?? âА ?? а ?? âА ?? а ?? style.css âА ?? а ?? âА ?? а ?? âА ?? а ?? series.php
Нека заредим главния файл на нашите блокове в functions.php
на нашата тема:
if (function_exists ('register_block_type')) изискват get_template_directory (). "/Blocks/series.php";
Обърнете внимание, че затваряме файла с условно. Това гарантира съвместимост с предишната версия на WordPress, че нашият блок се зарежда само когато Gutenberg присъства. Нашият блок сега трябва да бъде достъпен в интерфейса на Гутенберг.
Това как изглежда, когато вмъкнем блока.
API на Гутенберг
Гутенберг въвежда два комплекта API, за да регистрира нов блок. Ако погледнем към series.php
, ще намерим следния код, който регистрира новия ни блок. То също зарежда таблицата за стилове и JavaScript на предния край и в редактора.
register_block_type ('twentyseventeen / series', масив ('editor_script' => 'series-block-editor', 'editor_style' => 'series-block-editor', 'style' => 'series-block',));
Както можем да видим по-горе, нашият блок се нарича twentyseventeen / серия
, Името Block трябва да бъде уникално и пространствено за имена, за да се избегне сблъсък с другите блокове, донесени от другите приставки.
освен това, Gutenberg предоставя набор от нови JavaScript API за взаимодействие с “блок” интерфейс в редактора. Тъй като API е доста богат, ние ще се съсредоточим върху някои специфики, които мисля, че трябва да знаете, за да получите прост, но работещ блок на Гутенберг.
wp.blocks.registerBlockType
Първо, ще разгледаме wp.blocks.registerBlockType
. Тази функция е използвана регистрирате ново “блок” на редактора на Гутенберг. Той изисква два аргумента. Първият аргумент е името на блока, което трябва да следва името, регистрирано в register_block_type
функция в PHP. Вторият аргумент е Обект, определящ свойствата на блока като заглавие, категория и няколко функции за рендериране на интерфейса Block.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType ('twentyseventeen / series', title: __ ('HTML5 Series'), категория: 'widgets', ключови думи: ['html'], edit: function (props) , save: function (props) );
wp.element.createElement
Тази функция ви позволява да създадете елемента в “блок” в редактора за публикации. Най- wp.element.createElement
Функцията е абстракция на Реакцията createElement ()
така тя приема същия набор от аргументи. Първият аргумент приема типа на елемента, например абзац, а педя
, или a Разделение
както е показано по-долу:
wp.element.createElement ( "Разделение");
Ние можем псевдоним функцията в променлива така че е по-кратко да пиша. Например:
var el = wp.element.createElement; Ел ( "Разделение");
Ако ти предпочитат да използват новия синтаксис ES6, можете да го направите и по следния начин:
const createElement: el = wp.element; Ел ( "Разделение");
Ние също можем добавете атрибутите на елемента Както и клас
име или документ за самоличност
по втория параметър, както следва:
var el = wp.element.createElement; el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001');
Най- Разделение
че ние създадохме, няма да има смисъл без съдържанието. Ние можем добавете съдържанието на аргумента на третия параметър:
var el = wp.element.createElement; el ('p', 'class': 'series-html5', 'id': 'series-html-post-id-001', 'Тази статия е част от нашата "Серия уроци по HTML5 / CSS3" - посветена за да ви помогне да сте по-добър дизайнер и / или разработчик. Кликнете тук, за да видите повече статии от същата серия ');
wp.components
Най- wp.components
съдържат колекция от компонентите на Гутенберг, както подсказва името. Тези компоненти технически са React custom components, които включват бутон, Popover, Spinner, Tooltip и куп други. Ние можем използвайте тези компоненти в нашия собствен блок. В следващия пример добавяме компонент с бутони.
var Button = wp.components.Button; el (Бутон, 'class': 'бутон за изтегляне',, 'Изтегляне');
Атрибути
Атрибутите са начин за съхраняване на данните в нашия блок, като тези данни могат да бъдат като съдържанието, цветовете, подравняванията, URL адреса и т.н. редактиране()
функция, както следва:
edit: function (props) var content = props.attributes.seriesContent; return el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', съдържание);
За да актуализираме атрибутите, използваме setAttributes ()
функция. Обикновено променяме съдържанието на определени действия, като например при натискане на бутон, попълва се вход, се избира опция и т.н. В следващия пример го използваме, за да добавим резервно съдържание на нашия блок в случай, че нещо непредвидено се случи на нашия seriesContent
Атрибут.
edit: function (props) if (typeof props.attributes.seriesContent === 'undefined' ||! props.attributes.seriesContent) props.setAttribute (seriesContent: 'Здравей, свят! Ето резервното съдържание.' ) var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', съдържание),];
Запазване на блока
Най- запишете ()
функцията работи подобно на редактиране()
, освен че дефинира съдържанието на нашия блок за записване в базата данни за публикации. Запазването на съдържанието на блока е доста лесно, както виждаме по-долу:
save: function (props) if (! props ||! props.attributes.seriesContent) return; var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', съдържание),];
Какво следва?
Гутенберг ще промени WordPress екосистемата към по-добро (или вероятно по-лошо). Това позволява на разработчиците да възприеме нов начин за разработване на WordPress плъгини и теми. Гутенберг е само началото. Скоро “блок” парадигмата ще бъде разширена до други области на WordPress, като например API за настройка и Widgets.
Научете JavaScript Deeply; това е единственият начин да влезете в Гутенберг и да останете подходящи за бъдещето в индустрията на WordPress. Ако вече сте запознати с основите на JavaScript, странностите, функциите, инструментите, стоките и бадите, наистина съм сигурен, че ще успеете с Гутенберг.
Както споменахме, Гутенберг излага изобилие от API, достатъчно, за да направи почти всичко на вашия блок. Можете да изберете дали да кодирайте блока си с обикновен стар JavaScript, JavaScript със синтаксис ES6, React или дори Vue.
Идеи и вдъхновения
Създал съм много (много) прост блок на Гутенберг, който можете да намерите в хранилището на нашия профил в Github. Освен това съм събрал и редица хранилища, от които можете да вдъхновявате изграждането на по-сложен блок.
- Gutenblocks - Колекция от блокове от Mathieu Viet, написани на JavaScript с ES5 Синтаксис
- Jetpack Gutenblocks Project - колекция от блокове, включени в Jetpack
- Списък с примери за изпълнение на Гутенберг, включително с Vue.js
Допълнителна справка
- Официален архив на Гутенберг
- Наръчник на Гутенберг