Gutenberg Alles, was Sie über den neuesten Editor von WordPress wissen müssen
Gutenberg ist ein neuer Editor für WordPress Ersetzen Sie den aktuellen TinyMCE-Editor. Es ist ein ehrgeiziges Projekt, das WordPress in vielerlei Hinsicht verändern wird und sowohl reguläre Endbenutzer als auch Entwickler betreffen wird, insbesondere diejenigen, die auf das Editor-Fenster angewiesen sind, um an WordPress zu arbeiten. So sieht es aus.
Gutenberg führt auch ein neues Paradigma in WordPress ein “Block”.
“Block” ist der abstrakte Begriff zur Beschreibung Markup-Einheiten die aus dem Inhalt oder dem Layout einer Webseite zusammengestellt werden. Die Idee kombiniert Konzepte, was wir heute in WordPress erreichen Shortcodes, benutzerdefiniertes HTML und Embed-Discovery in eine einzige konsistente API und Benutzererfahrung.
Einrichten des Projekts
Einige Entwickler sind sich der Tatsache bewusst, dass Gutenberg auf React aufgebaut ist Barriere ist für Einstiegsentwickler zu hoch für die Entwicklung von Gutenberg.
Das Einrichten von React.js kann recht zeitaufwändig und verwirrend sein, wenn Sie gerade erst damit beginnen. Sie benötigen mindestens einen JSX-Transformator, Babel. Abhängig von Ihrem Code benötigen Sie möglicherweise einige Babel-Plugins und einen Bundler wie Webpack, Rollup oder Parcel.
Glücklicherweise, Einige Leute in der WordPress-Community wurden verstärkt und versuchen, die Entwicklung von Gutenberg für alle so einfach wie möglich zu gestalten. Heute haben wir ein Werkzeug, mit dem eine Gutenberg-Heizplatte erzeugt wird Wir können sofort mit dem Schreiben von Code beginnen anstatt mit den Werkzeugen und den Konfigurationen zu verwirren.
Guten Block erstellen
Das Create-guten-Block
ist ein initiiertes Projekt von Ahmad Awais. Es ist ein Zero-Configuration-Tool-Kit (# 0CJS
), mit dem Sie den Gutenberg-Block mit einigen modernen Stacks wie React, Webpack, ESNext, Babel, ESLint und Sass entwickeln können. Folgen Sie den Anweisungen, um mit Create Guten Block zu beginnen.
Verwenden von ES5 (ECMAScript 5)
Verwenden Sie alle diese Tools, um eine einfache zu erstellen “Hallo Welt” Block scheint einfach zu viel. Wenn Sie möchten, dass Ihre Stapel schlank bleiben, können Sie einen Gutenberg-Block mit einem einfachen, alten ECMAScript 5 entwickeln, mit dem Sie möglicherweise bereits vertraut sind. Wenn Sie haben WP-CLI 1.5.0 auf Ihrem Computer installiert, du kannst einfach laufen…
wp gerüstblock[--title = ] [--dashicon = ] [--category = ] [--theme] [--plugin = ] [--Macht]
… Bis Generieren Sie die Gutenberg Block Boilerplate nach Ihrem Plugin oder Thema. Dieser Ansatz ist insbesondere für vorhandene Plugins und Themen, die Sie vor der Gutenberg-Ära entwickelt haben, sinnvoller.
Anstatt ein neues Plugin für die Gutenberg-Blöcke zu erstellen, möchten Sie möglicherweise die Blöcke in Ihre Plugins oder die Designs integrieren. Und damit dieses Tutorial für jedermann leicht zu folgen ist, Wir verwenden ECMAScript 5 mit WP-CLI.
Einen neuen Block registrieren
Gutenberg ist derzeit als Plugin entwickelt und wird mit WordPress 5.0 zusammengeführt, wann immer sich das Team bereit fühlt. Sie müssen es also vorerst von der installieren Plugins Seite in wp-admin
. Wenn Sie es installiert und aktiviert haben, führen Sie den folgenden Befehl im Terminal oder an der Eingabeaufforderung aus, wenn Sie sich auf einem Windows-Computer befinden.
wp scaffold block series --title = "HTML5 Series" --theme
Dieser Befehl erzeugt einen Block zum aktuell aktiven Design. Unser Block besteht aus folgenden Dateien:
. EIN¢?? ?? ??¢?? ?? ??¢?? ?? Serie â?? 'à  ¢?? ?? ??¢?? ?? ??¢?? ?? block.js â?? 'à  ¢?? ?? ??¢?? ?? ??¢?? ?? editor.css â?? 'à  ¢?? ?? ??¢?? ?? ??¢?? ?? style.css â?? ?? ??¢?? ?? ??¢?? ?? series.php
Laden wir die Hauptdatei unserer Blöcke in die Functions.php
unseres Themas:
if (function_exists ('register_block_type')) erfordert get_template_directory (). '/blocks/series.php';
Beachten Sie, dass wir das Laden der Datei mit einer Bedingung versehen. Dies stellt sicher Kompatibilität mit der vorherigen WordPress-Version, dass unser Block nur geladen wird, wenn Gutenberg vorhanden ist. Unser Block sollte jetzt in der Gutenberg-Schnittstelle verfügbar sein.
So sieht es aus, wenn wir den Block einfügen.
Gutenberg-APIs
Gutenberg führt zwei API-Sets ein, um einen neuen Block zu registrieren. Wenn wir uns das anschauen series.php
, Wir werden den folgenden Code finden, der unseren neuen Block registriert. Es auch lädt das Stylesheet und die JavaScripts im Frontend und im Editor.
register_block_type ('twentyseventeen / series', Array ('editor_script' => 'Serienblockeditor', 'editor_style' => 'Serienblockeditor', 'style' => 'Serienblock',));
Wie wir oben sehen können, heißt unser Block zwanzigsechszehn / serie
, Der Blockname muss eindeutig sein und einen Namensraum haben, um eine Kollision mit den anderen durch die anderen Plugins gebrachten Blocks zu vermeiden.
Außerdem, Gutenberg bietet eine Reihe neuer JavaScript-APIs für die Interaktion mit der “Block” Schnittstelle im Editor Da die API recht reichlich ist, konzentrieren wir uns auf einige Besonderheiten, die Sie meiner Meinung nach kennen sollten, um einen einfachen, aber funktionierenden Gutenberg-Block zu erhalten.
wp.blocks.registerBlockType
Zuerst werden wir nachschauen wp.blocks.registerBlockType
. Diese Funktion wird verwendet ein neues registrieren “Block” an den Gutenberg-Redakteur. Es erfordert zwei Argumente. Das erste Argument ist der Blockname, der dem Namen folgen soll, der im registriert ist register_block_type
Funktion in der PHP-Seite. Das zweite Argument ist ein Objekt, das die Blockeigenschaften definiert wie Titel, Kategorie und ein paar Funktionen zum Rendern der Blockschnittstelle.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType ('twentyseventeen / series', title: __ ('HTML5 Series')), Kategorie: 'Widgets', Schlüsselwörter: ['html'], bearbeiten: Funktion (Requisiten) , Speichern: Funktion (Requisiten) );
wp.element.createElement
Mit dieser Funktion können Sie das Element innerhalb von erstellen “Block” im Postherausgeber. Das wp.element.createElement
Funktion ist im Grunde eine Abstraktion der Reaktion createElement ()
Funktion akzeptiert also die gleiche Menge von Argumenten. Das erste Argument nimmt den Typ des Elements an, zum Beispiel einen Absatz, a Spanne
, oder ein div
Wie nachfolgend dargestellt:
wp.element.createElement ('div');
Wir können Alias die Funktion in eine Variable also ist es kürzer zu schreiben. Zum Beispiel:
var el = wp.element.createElement; el ('div');
Wenn du bevorzugen Sie die neue ES6-Syntax, Sie können es auch so machen:
const createElement: el = wp.element; el ('div');
Wir können auch Fügen Sie die Elementattribute hinzu so wie die Klasse
Name oder Ich würde
auf dem zweiten Parameter wie folgt:
var el = wp.element.createElement; el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001');
Das div
dass wir geschaffen haben, wäre ohne den Inhalt nicht sinnvoll. Wir können Fügen Sie den Inhalt des Arguments des dritten Parameters hinzu:
var el = wp.element.createElement; el ('p', 'class': 'series-html5', 'id': 'series-html-post-id-001', 'Dieser Artikel ist Teil unserer "HTML5 / CSS3-Tutorials" - gewidmet Um Sie zu einem besseren Designer und / oder Entwickler zu machen, klicken Sie hier, um weitere Artikel aus derselben Serie zu sehen.
WP-Komponenten
Das WP-Komponenten
enthalten eine Sammlung von Gutenberg-Komponenten, wie der Name schon sagt. Bei diesen Komponenten handelt es sich technisch um angepasste React-Komponenten, darunter Button, Popover, Spinner, Tooltip und eine Reihe anderer. Wir können Wiederverwendung dieser Komponenten in unserem eigenen Block. Im folgenden Beispiel fügen wir eine Schaltflächenkomponente hinzu.
var Button = wp.components.Button; el (Button, 'class': 'download-button',, 'Download');
Attribute
Die Attribute sind der Weg, um die Daten in unserem Block zu speichern. Diese Daten können wie Inhalt, Farben, Ausrichtungen, URL usw. sein. Wir können die Attribute aus den übergebenen Eigenschaften erhalten bearbeiten()
Funktion wie folgt:
edit: Funktion (Requisiten) var content = props.attributes.seriesContent; return el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', Inhalt);
Um die Attribute zu aktualisieren, verwenden wir die setAttributes ()
Funktion. In der Regel würden wir den Inhalt bei bestimmten Aktionen ändern, z. B. wenn eine Schaltfläche angeklickt wird, eine Eingabe gefüllt wird, eine Option ausgewählt wird usw. Im folgenden Beispiel verwenden wir diese Option, um a hinzuzufügen Zurückfallen Inhalt unseres Blocks für den Fall, dass etwas Unerwartetes passiert ist seriesContent
Attribut.
edit: function (Requisiten) if (type of props.attributes.seriesContent === 'undefined' ||! props.attributes.seriesContent) props.setAttribute (seriesContent: 'Hello World! Hier ist der Fallback-Inhalt.' ) var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', Inhalt),];
Speichern des Blocks
Das sparen()
Funktion funktioniert ähnlich wie die bearbeiten()
, außer dass es den Inhalt unseres Blocks definiert, der in der Post-Datenbank gespeichert werden soll. Das Speichern des Blockinhalts ist recht unkompliziert, wie wir unten sehen können:
save: Funktion (Requisiten) if (! Requisiten ||! props.attributes.seriesContent) return; var content = props.attributes.seriesContent; return [el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', Inhalt),];
Was kommt als nächstes?
Gutenberg wird das WordPress-Ökosystem zum Besseren (oder möglicherweise zum Schlechteren) verändern. Es ermöglicht Entwicklern, dies zu tun eine neue Art der Entwicklung von WordPress-Plugins und -Themen einführen. Gutenberg ist nur ein Anfang. Bald die “Block” Das Paradigma wird auf andere Bereiche von WordPress wie die Einstellungs-APIs und die Widgets erweitert.
Lerne JavaScript tief; Dies ist der einzige Weg, um in Gutenberg einzusteigen und für die Zukunft der WordPress-Industrie relevant zu bleiben. Wenn Sie bereits mit den JavaScript-Grundlagen, den Eigenheiten, den Funktionen, den Werkzeugen, den Waren und den Fehlern vertraut sind, bin ich mir sicher, dass Sie mit Gutenberg vertraut werden.
Wie bereits erwähnt, bietet Gutenberg eine Fülle von APIs, die ausreichen, um Ihrem Block fast alles zu tun. Sie können wählen, ob Sie möchten Codieren Sie Ihren Block mit einem einfachen alten JavaScript, JavaScript mit ES6-Syntax, React oder sogar Vue.
Ideen und Inspirationen
Ich habe einen sehr (sehr) einfachen Gutenberg-Block erstellt, den Sie im Repository unseres Github-Kontos finden können. Des Weiteren habe ich eine Reihe von Repositories zusammengestellt, aus denen Sie Inspiration für den Bau eines komplexeren Blocks erhalten können.
- Gutenblocks - Eine Sammlung von Blöcken von Mathieu Viet, geschrieben in JavaScript mit ES5-Syntax
- Jetpack Gutenblocks Project - eine in Jetpack gebündelte Sammlung von Blöcken
- Eine Liste von Beispielen für die Implementierung von Gutenberg, einschließlich Vue.js
Weitere Hinweise
- Gutenberg Official Repository
- Gutenberg-Handbuch