Гутенберг все, что нужно знать о последнем редакторе WordPress
Гутенберг - это новый редактор для WordPress, который полностью заменить текущий редактор на базе TinyMCE. Это амбициозный проект, который, возможно, изменит WordPress во многих отношениях и затронет как обычных конечных пользователей, так и разработчиков, в частности тех, кто зависит от экрана редактора для работы над WordPress. Вот как это выглядит.
Гутенберг также представляет новую парадигму в WordPress под названием “блок”.
“блок” это абстрактный термин, используемый для описания единицы наценки которые составлены из содержимого или макета веб-страницы. Идея объединяет концепции того, что в WordPress сегодня мы достигаем с шорткоды, пользовательский HTML и встраивание обнаружения в единый согласованный API и пользовательский опыт.
Настройка проекта
Зная о том, что Gutenberg построен на основе React, некоторые разработчики обеспокоены тем, что Слишком высокий барьер для разработчиков начального уровня для развития Гутенберга.
Настройка React.js может быть довольно трудоемкой и запутанной, если вы только начинаете с ней работать. Вам понадобится, по крайней мере, JSX-преобразователь Babel, в зависимости от вашего кода вам могут понадобиться некоторые плагины Babel и такой пакет, как Webpack, Rollup или Parcel..
к счастью, некоторые люди в сообществе WordPress усилились и пытаемся сделать разработку Гутенберга как можно более легкой для всех. Сегодня у нас есть инструмент, который будет генерировать шаблон Гутенберга так мы можем начать писать код прямо сейчас вместо того, чтобы сбивать с толку инструментами и конфигурациями.
Создать блок Гутен
создание-Гутен-блок
является начальным проектом Ахмада Авайса. Это набор инструментов с нулевой конфигурацией (# 0CJS
), что позволит вам разработать блок Гутенберга с некоторыми современными предустановками стеков, включая React, Webpack, ESNext, Babel, ESLint и Sass. Следуйте инструкциям, чтобы начать работу с блоком Guten..
Использование ES5 (ECMAScript 5)
Используя все эти инструменты для создания простого “Привет, мир” блок может показаться слишком много. Если вы хотите, чтобы ваши стеки были скудными, вы можете разработать блок Гутенберга, используя простой старый ECMAScript 5, с которым вы, возможно, уже знакомы. Если у вас есть WP-CLI 1.5.0 установлен на вашем компьютере, Вы можете просто бежать ...
блок строительных лесов[--Title = ] [--dashicon = ] [--category = ] [--theme] [--plugin = ] [--force]
… Чтобы создать шаблонный блок Gutenberg для вашего плагина или темы. Этот подход более целесообразен, особенно для существующих плагинов и тем, которые вы разработали до эпохи Гутенберга..
Вместо того, чтобы создавать новый плагин для размещения блоков Гутенберга, вы можете интегрировать блоки в свои плагины или темы. И сделать этот урок простым для всех, мы будем использовать ECMAScript 5 с WP-CLI.
Регистрация нового блока
Гутенберг в настоящее время разрабатывается как плагин и будет добавлен в WordPress 5.0, когда команда почувствует, что она готова. Итак, на данный момент вам нужно будет установить его с Страница плагинов в WP-администратора
. После того, как вы установили и активировали его, запустите следующую команду в терминале или в командной строке, если вы работаете на компьютере с Windows.
серия блоков лесов WP --title = "Серия HTML5" - тема
Эта команда сгенерирует блок для текущей активной темы. Наш Блок состоит из следующих файлов:
. â ??  ?? â ??  ?? â ??  ?? серия М¢Â ?? Â'Ã' Ã' â ??  ?? â ??  ?? â ??  ?? block.js â ?? Â'Ã' Ã' â ??  ?? â ??  ?? â ??  ?? editor.css â ?? Â'Ã' Ã' â ??  ?? â ??  ?? â ??  ?? style.css â ??  ?? â ??  ?? â ??  ?? series.php
Давайте загрузим основной файл наших блоков в functions.php
нашей темы:
if (function_exists ('register_block_type')) require get_template_directory (). '/Blocks/series.php';
Обратите внимание, что мы прилагаем загрузку файла с условным условием. Это обеспечивает совместимость с предыдущей версией WordPress, что наш блок загружается только при наличии Гутенберга. Наш Блок теперь должен быть доступен в интерфейсе Гутенберга.
Вот как это выглядит, когда мы вставляем блок.
API Гутенберга
Гутенберг представляет два набора API для регистрации нового блока. Если мы посмотрим на series.php
, мы найдем следующий код, который регистрирует наш новый блок. Это также загружает таблицу стилей и скрипты Java на интерфейс и редактор.
register_block_type ('двадцать семнадцать / серия', массив ('editor_script' => 'series-block-editor', 'editor_style' => 'series-block-editor', 'style' => 'series-block',));
Как мы видим выше, наш Блок называется twentyseventeen / серия
, имя блока должно быть уникальным и иметь пространство имен, чтобы избежать столкновения с другими блоками, добавленными другими плагинами.
более того, Гутенберг предоставляет набор новых API-интерфейсов JavaScript для взаимодействия с “блок” интерфейс в редакторе. Поскольку API довольно много, мы сосредоточимся на некоторых особенностях, которые, я думаю, вы должны знать, чтобы получить простой, но работающий блок Гутенберга..
wp.blocks.registerBlockType
Во-первых, мы будем изучать wp.blocks.registerBlockType
. Эта функция используется для зарегистрировать новый “блок” редактору Гутенберга. Это требует двух аргументов. Первый аргумент - это имя блока, которое должно следовать за именем, зарегистрированным в register_block_type
функция в сторону PHP. Второй аргумент Объект, определяющий свойства блока как заголовок, категория и пара функций для визуализации интерфейса блока.
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 ()
Функция, таким образом, принимает тот же набор аргументов. Первый аргумент принимает тип элемента, например, абзац, пролет
, или ДИВ
как показано ниже:
wp.element.createElement ( 'DIV');
Мы можем псевдоним функции в переменную так что короче писать. Например:
var el = wp.element.createElement; Эль ( 'DIV');
если ты предпочитаю использовать новый синтаксис ES6, Вы также можете сделать это следующим образом:
const createElement: el = wp.element; Эль ( 'DIV');
Мы также можем добавить атрибуты элемента такой как учебный класс
имя или Я бы
по второму параметру следующим образом:
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
содержат коллекцию, как следует из названия, компонентов Gutenberg. Эти компоненты технически являются пользовательскими компонентами React, которые включают Button, Popover, Spinner, Tooltip и многие другие. Мы можем повторно использовать эти компоненты в наш собственный блок. В следующем примере мы добавляем компонент кнопки.
var Button = wp.components.Button; el (Button, 'class': 'download-button',, 'Download');
Атрибуты
Атрибуты - это способ хранения данных в нашем блоке, эти данные могут быть похожи на содержимое, цвета, выравнивания, URL и т. Д. Мы можем получить атрибуты из свойств, передаваемых в редактировать()
функция следующим образом:
edit: function (props) var content = props.attributes.seriesContent; return el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', content);
Для обновления атрибутов мы используем SetAttributes ()
функция. Обычно мы меняем содержимое определенного действия, например, когда нажимается кнопка, ввод заполнен, выбран параметр и т. Д. В следующем примере мы используем его для добавления отступать содержание нашего Блока на случай, если с нашим seriesContent
атрибут.
edit: function (props) if (typeof props.attributes.seriesContent === 'undefined' ||! props.attributes.seriesContent) props.setAttribute (seriesContent: 'Hello World! Вот резервный контент.' ) var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', content),];
Сохранение блока
спасти()
функция работает аналогично редактировать()
, за исключением того, что он определяет содержимое нашего блока для сохранения в почтовой базе данных. Сохранить содержимое блока довольно просто, как мы видим ниже:
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', content),];
Что дальше?
Гутенберг изменит экосистему WordPress к лучшему (или, возможно, к худшему). Это позволяет разработчикам принять новый способ разработки плагинов и тем WordPress. Гутенберг это только начало. Скоро “блок” Парадигма будет расширена на другие области WordPress, такие как API настроек и виджеты.
Изучите JavaScript глубоко; Это единственный способ попасть в Гутенберг и оставаться актуальным для будущего в индустрии WordPress. Если вы уже знакомы с основами JavaScript, причудами, функциями, инструментами, товарами и недостатками, я действительно уверен, что вы освоитесь с Гутенбергом.
Как уже упоминалось, Гутенберг предоставляет множество API-интерфейсов, которых достаточно, чтобы сделать что-нибудь для вашего Блока. Вы можете выбрать, следует ли кодируйте свой блок с помощью старого старого JavaScript, JavaScript с синтаксисом ES6, React или даже Vue.
Идеи и вдохновение
Я создал очень (очень) простой блок Гутенберга, который вы можете найти в репозитории нашего аккаунта на Github. Кроме того, я также собрал несколько репозиториев, из которых вы можете получить вдохновение для создания более сложного блока..
- Gutenblocks - коллекция блоков, написанных Матье Вьет на JavaScript с синтаксисом ES5
- Jetpack Gutenblocks Project - коллекция блоков, включенных в Jetpack
- Список примеров реализации Гутенберга, в том числе с Vue.js
Дальнейшая ссылка
- Официальный репозиторий Гутенберга
- Справочник Гутенберга