Гутенберг Все, що потрібно знати про останній редактор WordPress
Гутенберг - новий редактор для WordPress, який буде повністю замінити поточний редактор, що працює на TinyMCE. Це амбітний проект, який, можливо, змінить WordPress багатьма способами і вплине як на звичайних кінцевих користувачів, так і на розробників, зокрема, тих, хто залежить від екрану редактора для роботи над WordPress. Ось як це виглядає.
Гутенберг також вводить нову парадигму в WordPress “Блок”.
“Блок” це абстрактний термін, що використовується для опису одиниць розмітки які складаються з вмісту або макета веб-сторінки. Ідея поєднує в собі поняття того, що в WordPress сьогодні ми досягаємо з шорткодні коди, спеціальний HTML-код і вбудовування відкриття в єдиний послідовний API та користувальницький досвід.
Налаштування проекту
Знаючи той факт, що Гутенберг будується на вершині React, деякі розробники стурбовані тим, що Бар'єр занадто високий для розробників початкового рівня для розробки Гутенберга.
Налаштування React.js може зайняти багато часу і заплутати, якщо ви тільки починаєте роботу з ним. Вам знадобиться, принаймні, трансформатор JSX, Babel, залежно від вашого коду вам знадобляться деякі плагіни Babel, а Bundler - Webpack, Rollup або Parcel.
На щастя, деякі люди в спільноті WordPress активізувалися і намагаються зробити розвиток Гутенберга якомога простішим для всіх. Сьогодні у нас є інструмент, який дозволить генерувати таку модель Гутенберга ми можемо відразу почати писати код замість того, щоб здивуватися інструментами та конфігураціями.
Створити блок Guten
The create-guten-block
є ініціативним проектом Ахмада Авайса. Це набір інструментів з нульовою конфігурацією (# 0CJS
), що дозволить вам розробити блок Гутенберга з деякими сучасними стеками, що включають в себе React, Webpack, ESNext, Babel, ESLint і Sass. Виконайте інструкцію, щоб розпочати роботу зі створенням блоку Guten.
Використання ES5 (ECMAScript 5)
Використовуючи всі ці інструменти для створення простого “Привіт Світ” блок може здатися занадто багато. Якщо ви хочете тримати свої стеки нахиленими, ви можете розробити блок Гутенберга, використовуючи звичайний добрий старий ECMAScript 5, який ви, можливо, вже знайомі. Якщо у вас є WP-CLI 1.5.0, встановлений на вашому комп'ютері, можна просто запустити ...
wp scaffold block[--title = ] [--dashicon = ] [--category = ] [- тема] [--plugin = ] [--force]
… До генерувати шаблон блоку Гутенберга до вашого плагіна або теми. Цей підхід є більш розумним, зокрема, для існуючих плагінів і тем, які ви розробили до епохи Гутенберга.
Замість того, щоб створювати новий плагін для розміщення блоків Гутенберга, можна інтегрувати блоки у плагіни або теми. І зробити цей підручник легким для всіх, ми будемо використовувати ECMAScript 5 з WP-CLI.
Реєстрація нового блоку
Gutenberg в даний час розроблений як плагін і буде об'єднаний з WordPress 5.0, коли команда вважає, що вона готова. Отже, на даний момент вам потрібно встановити його з Сторінка плагінів у wp-admin
. Після встановлення та активації запустіть у терміналі або командний рядок наступну команду, якщо ви працюєте на машині Windows.
wp scaffold блок серії --title = "HTML5 Series" --тема
Ця команда генеруватиме блок на поточну активну тему. Наш блок буде складатися з таких файлів:
. Ã¢В¢В¢Â ?? серії Ã¢В? А?¢В¢В¢Â ?? block.js âВ? А?¢В¢В¢Â ?? editor.css âВ? А?¢В¢В¢Â ?? style.css Ã¢В¢В¢Â ?? series.php
Завантажимо основний файл наших блоків у functions.php
нашої теми:
if (function_exists ('register_block_type')) потрібно get_template_directory (). '/blocks/series.php';
Зверніть увагу, що ми додаємо завантаження файлу з умовною. Це гарантує сумісність з попередньою версією WordPress, що наш блок завантажується тільки при присутності Гутенберга. Тепер наш блок повинен бути доступним в інтерфейсі Гутенберга.
Це як це виглядає, коли ми вставляємо блок.
API Gutenberg
Gutenberg представляє два набори API для реєстрації нового блоку. Якщо ми подивимося на series.php
, ми знайдемо наступний код, який реєструє наш новий блок. Він також завантажує таблицю стилів і JavaScript на інтерфейс і редактор.
register_block_type ('twentyseventeen / series', масив ('editor_script' => 'series-block-editor', 'editor_style' => 'серія-блок-редактор', 'стиль' => 'серія-блок',));
Як ми бачимо вище, наш блок названий двадцять сімнадцять / серія
, Назва блоку повинна бути унікальною і простору імен, щоб уникнути зіткнення з іншими блоками, які приносять інші плагіни.
Крім того, 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'), категорія: 'віджети', ключові слова: ['html'], редагувати: функція (реквізит) , зберегти: функція (реквізити) );
wp.element.createElement
Ця функція дозволяє створювати елемент всередині “Блок” у редакторі повідомлень. The wp.element.createElement
Функція є в основному абстракцією Реакції createElement ()
Функція, таким чином, приймає один і той же набір аргументів. Перший аргумент приймає тип елемента, наприклад абзац, a span
, або a div
як показано нижче:
wp.element.createElement ('div');
Ми можемо псевдонім функції в змінну тому краще писати. Наприклад:
var el = wp.element.createElement; el ('div');
Якщо ви надає перевагу використанню нового синтаксису ES6, Ви також можете зробити це так:
const createElement: el = wp.element; el ('div');
Ми також можемо додайте атрибути елемента наприклад, клас
ім'я або id
по другому параметру наступним чином:
var el = wp.element.createElement; el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001');
The div
що ми створили б не має сенсу без змісту. Ми можемо додайте вміст на аргумент третього параметра:
var el = wp.element.createElement; el ('p', 'class': 'series-html5', 'id': 'series-html-post-id-001', 'Ця стаття є частиною нашої "серії навчальних посібників HTML5 / CSS3" щоб зробити вас кращим дизайнером та / або розробником. Натисніть тут, щоб побачити більше статей з тієї ж серії ');
wp.components
The wp.components
містять колекцію, як випливає з назви, компонентів Гутенберга. Ці компоненти технічно є компонентами React custom, які включають кнопки, 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: 'Hello World! ) var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', вміст),];
Збереження блоку
The зберегти ()
функція працює аналогічно редагувати ()
, крім того, він визначає вміст нашого Блоку для збереження до бази даних повідомлень. Збереження вмісту блоку досить просте, як ми бачимо нижче:
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 налаштувань і віджетів.
Вивчайте JavaScript глибоко; це єдиний спосіб потрапити в Гутенберг і залишатися актуальним для майбутнього в галузі WordPress. Якщо ви вже знайомі з основами JavaScript, примхами, функціями, інструментами, товарами та басами, я дійсно впевнений, що ви доберетеся до Gutenberg.
Як уже згадувалося, Гутенберг надає достатню кількість API, достатню для того, щоб зробити майже що завгодно для вашого блоку. Ви можете вибрати, чи потрібно кодуйте свій Блок звичайним старим JavaScript, JavaScript з синтаксисом ES6, React або навіть Vue.
Ідеї та натхнення
Я створив дуже (дуже) простий блок Гутенберга, який можна знайти в репозиторії нашого облікового запису Github. Крім того, я також зібрав ряд сховищ, звідки можна надихати на створення більш складного блоку.
- Gutenblocks - колекція блоків, створених Mathieu Viet, написаних на JavaScript з синтаксисом ES5
- Jetpack Gutenblocks Project - колекція блоків, що входять в Jetpack
- Список прикладів реалізації Гутенберга, включаючи Vue.js
Додаткова довідка
- Офіційний репозиторій Гутенберга
- Довідник Гутенберга