Gutenberg Tout ce que vous devez savoir sur le dernier éditeur de WordPress
Gutenberg est un nouvel éditeur pour WordPress qui va totalement remplacer l'éditeur actuel alimenté par TinyMCE. Il s’agit d’un projet ambitieux qui modifiera sans doute WordPress de nombreuses manières et affectera aussi bien les utilisateurs finaux que les développeurs, en particulier ceux qui dépendent de l’éditeur pour travailler avec WordPress. Voici à quoi ça ressemble.
Gutenberg introduit également un nouveau paradigme dans WordPress appelé “Bloc”.
“Bloc” est le terme abstrait utilisé pour décrire unités de balisage qui sont composées à partir du contenu ou de la présentation d’une page Web. L’idée combine les concepts de ce que nous réalisons dans WordPress avec shortcodes, HTML personnalisé et découverte intégrée dans une seule API cohérente et expérience utilisateur.
Mise en place du projet
Sachant que Gutenberg est construit sur React, certains développeurs craignent que le barrière est trop élevé pour les développeurs débutants pour développer Gutenberg.
Configurer React.js peut prendre beaucoup de temps et être source de confusion si vous commencez à l'utiliser. Vous aurez besoin d'au moins un transformateur JSX, Babel. Selon votre code, vous aurez peut-être besoin de plugins Babel et d'un bundler comme Webpack, Rollup ou Parcel..
Heureusement, certaines personnes au sein de la communauté WordPress ont intensifié et essayons de rendre le développement de Gutenberg le plus facile possible pour tout le monde. Aujourd’hui, nous avons un outil qui générera un passe-partout Gutenberg afin nous pouvons commencer à écrire du code tout de suite au lieu de tromper avec les outils et les configurations.
Créer un bloc de gluten
le créer-guten-block
est un projet initié par Ahmad Awais. C'est un kit d'outils de configuration zéro (# 0CJS
) qui vous permettra de développer le bloc Gutenberg avec des piles prédéfinies modernes telles que React, Webpack, ESNext, Babel, ESLint et Sass. Suivez les instructions pour démarrer avec Create Guten Block.
Utilisation de ES5 (ECMAScript 5)
En utilisant tous ces outils pour créer un simple “Bonjour le monde” bloquer peut sembler trop. Si vous voulez garder vos piles minces, vous pouvez réellement développer un bloc de Gutenberg en utilisant un bon vieux logiciel ECMAScript 5 que vous connaissez peut-être déjà. Si tu as WP-CLI 1.5.0 installé sur votre ordinateur, vous pouvez simplement courir…
bloc d'échafaudage wp[--title = ] [--dashicon = ] [--category = ] [--theme] [--plugin = ] [--Obliger]
… à générer le bloc général du bloc Gutenberg à votre plugin ou à votre thème. Cette approche est plus judicieuse, en particulier pour les plug-ins existants et les thèmes que vous avez développés avant l'ère Gutenberg..
Au lieu de créer un nouveau plugin pour gérer les blocs de Gutenberg, vous souhaiterez peut-être intégrer les blocs à vos plugins ou à vos thèmes. Et pour rendre ce tutoriel facile à suivre pour tout le monde, nous utiliserons ECMAScript 5 avec WP-CLI.
Enregistrement d'un nouveau bloc
Gutenberg est actuellement développé en tant que plugin et sera intégré à WordPress 5.0 dès que l'équipe le jugera prêt. Donc, pour le moment, vous devrez l’installer à partir du Plugins page en wp-admin
. Une fois que vous l'avez installé et activé, exécutez la commande suivante dans le terminal ou l'invite de commande si vous êtes sur un ordinateur Windows..
Série de blocs d'échafaudage wp --title = "Série HTML5" --theme
Cette commande générera un bloc pour le thème actuellement actif. Notre bloc comprendra les fichiers suivants:
. UNE¢Â ??  ?? â ??  ?? â ??  ?? série â ?? Â'Ã' Ã' â ??  ?? â ??  ?? â ??  ?? block.js â ?? Â'Ã' Ã' â ??  ?? â ??  ?? â ??  ?? editor.css â ?? Â'Ã' Ã' â ??  ?? â ??  ?? â ??  ?? style.css â ??  ?? â ??  ?? â ??  ?? série.php
Chargeons le fichier principal de nos blocs dans le functions.php
de notre thème:
if (function_exists ('register_block_type')) require get_template_directory (). '/blocks/series.php';
Notez que nous incluons le chargement de fichier avec un conditionnel. Cela garantit compatibilité avec la version précédente de WordPress que notre bloc n'est chargé que lorsque Gutenberg est présent. Notre bloc devrait maintenant être disponible dans l'interface Gutenberg.
C'est comme ça quand on insère le bloc.
API Gutenberg
Gutenberg introduit deux ensembles d'API pour enregistrer un nouveau bloc. Si on regarde le série.php
, nous trouverons le code suivant qui enregistre notre nouveau bloc. Ça aussi charge la feuille de style et les scripts Java sur le front-end et l'éditeur.
register_block_type ('vingt-sept / série', array ('editor_script' => 'series-block-editor', 'editor_style' => 'series-block-editor', 'style' => 'series-block',));
Comme nous pouvons le voir ci-dessus, notre bloc s'appelle vingt-sept / série
, le nom du bloc doit être unique et namespaced pour éviter les collisions avec les autres blocs apportés par les autres plugins.
en outre, Gutenberg fournit un ensemble de nouvelles API JavaScript permettant d’interagir avec le “Bloc” interface dans l'éditeur. Puisque l’API est assez abondante, nous allons nous concentrer sur certains détails que vous devriez connaître pour obtenir un bloc Gutenberg simple mais fonctionnel..
wp.blocks.registerBlockType
Tout d'abord, nous examinerons wp.blocks.registerBlockType
. Cette fonction est utilisée pour enregistrer un nouveau “Bloc” à l'éditeur de Gutenberg. Cela nécessite deux arguments. Le premier argument est le nom du bloc qui doit suivre le nom enregistré dans le répertoire. register_block_type
fonctionner du côté de PHP. Le deuxième argument est un Objet définissant les propriétés du bloc comme le titre, la catégorie et quelques fonctions pour rendre l'interface Block.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType ('twentyseventeen / series', title: __ ('HTML5 Series'), catégorie: 'widgets', mots clés: ['html'], edit: function (props) , enregistrer: function (props );
wp.element.createElement
Cette fonction vous permet de créer l’élément au sein de la “Bloc” dans l'éditeur de post. le wp.element.createElement
la fonction est fondamentalement une abstraction de la réaction createElement ()
ainsi, il accepte le même ensemble d’arguments. Le premier argument prend le type de l’élément, par exemple un paragraphe, un envergure
, ou un div
comme indiqué ci-dessous:
wp.element.createElement ('div');
nous pouvons alias la fonction dans une variable donc c'est plus court pour écrire. Par exemple:
var el = wp.element.createElement; el ('div');
Si vous préfère utiliser la nouvelle syntaxe ES6, vous pouvez aussi le faire de cette façon:
const createElement: el = wp.element; el ('div');
Nous pouvons aussi ajouter les attributs de l'élément comme le classe
nom ou identifiant
sur le second paramètre comme suit:
var el = wp.element.createElement; el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001');
le div
que nous avons créé n'aurait pas de sens sans le contenu. nous pouvons ajoute le contenu sur l'argument du troisième paramètre:
var el = wp.element.createElement; el ('p', 'class': 'series-html5', 'id': 'series-html-post-id-001', 'Cet article fait partie de notre "Série de tutoriels HTML5 / CSS3" - dédiée pour vous aider à devenir un meilleur concepteur et / ou développeur. Cliquez ici pour voir plus d'articles de la même série ');
wp.components
le wp.components
contient une collection de, comme leur nom l’indique, les composants de Gutenberg. Techniquement, ces composants sont des composants personnalisés de React qui incluent les boutons, Popover, Spinner, les info-bulles et bien d’autres. nous pouvons réutiliser ces composants dans notre propre bloc. Dans l'exemple suivant, nous ajoutons un composant de bouton.
var Button = wp.components.Button; el (Button, 'class': 'download-button',, 'Download');
Les attributs
Les attributs sont le moyen de stocker les données dans notre bloc, ces données peuvent ressembler au contenu, aux couleurs, aux alignements, à l’URL, etc. Nous pouvons obtenir les attributs à partir des propriétés passées sur le modifier()
fonction, comme suit:
edit: function (props) var content = props.attributes.seriesContent; return el ('div', 'class': 'series-html5', 'id': 'series-html-post-id-001', contenu);
Pour mettre à jour les attributs, nous utilisons le setAttributes ()
une fonction. En règle générale, nous modifions le contenu de certaines actions, par exemple lorsqu'un clic est effectué sur un bouton, une entrée est renseignée, une option est sélectionnée, etc. Dans l'exemple suivant, nous l'utilisons pour ajouter un élément. se retirer contenu de notre bloc au cas où quelque chose d'inattendu se produirait sérieContenu
Attribut.
edit: function (props) if (type of props.attributes.seriesContent === 'undefined' ||! props.attributes.seriesContent) props.setAttribute (seriesContent: 'Hello World! Voici le contenu de repli.' ) var content = props.attributes.seriesContent; return [el ('div', 'classe': 'série-html5', 'id': 'série-html-post-id-001', contenu),];
Sauver le bloc
le enregistrer()
fonction fonctionne de manière similaire à la modifier()
, sauf qu'il définit le contenu de notre bloc à enregistrer dans la base de données post. L'enregistrement du contenu du bloc est assez simple, comme on peut le voir ci-dessous:
save: function (props) if (! props ||! props.attributes.seriesContent) return; var content = props.attributes.seriesContent; return [el ('div', 'classe': 'série-html5', 'id': 'série-html-post-id-001', contenu),];
Et après?
Gutenberg changera l'écosystème WordPress pour le meilleur (ou éventuellement le pire). Il permet aux développeurs de adopter une nouvelle façon de développer des plugins et des thèmes WordPress. Gutenberg n'est qu'un début. Bientôt le “Bloc” paradigme sera étendu à d'autres domaines de WordPress tels que les API de paramètres et les widgets.
Apprendre JavaScript profondément; c'est le seul moyen d'entrer dans Gutenberg et de rester pertinent pour l'avenir dans l'industrie WordPress. Si vous connaissez déjà les bases de JavaScript, les bizarreries, les fonctions, les outils, les biens et les inconvénients, je suis sûr que vous vous familiariserez avec Gutenberg..
Comme mentionné, Gutenberg expose une abondance d'API, suffisamment pour faire presque n'importe quoi à votre bloc. Vous pouvez choisir de Codez votre Block avec un ancien et simple JavaScript, JavaScript avec la syntaxe ES6, React ou même Vue.
Idées et inspirations
J'ai créé un bloc Gutenberg très (très) simple que vous pouvez trouver dans le référentiel de notre compte Github. En outre, j'ai également mis en place un certain nombre de référentiels à partir desquels vous pouvez trouver l'inspiration pour construire un Block plus complexe..
- Gutenblocks - Une collection de blocs de Mathieu Viet écrite en JavaScript avec la syntaxe ES5
- Jetpack Gutenblocks Project - une collection de blocs fournis dans Jetpack
- Liste d'exemples d'implémentation de Gutenberg, y compris avec Vue.js
Référence supplémentaire
- Dépôt officiel Gutenberg
- Manuel de Gutenberg