{"id":228739,"date":"2022-10-19T13:31:00","date_gmt":"2022-10-19T10:31:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228739"},"modified":"2022-11-09T04:05:45","modified_gmt":"2022-11-09T01:05:45","slug":"creation-dun-plugin-pour-lediteur-de-blocs-wordpress-gutenberg","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/creation-dun-plugin-pour-lediteur-de-blocs-wordpress-gutenberg\/","title":{"rendered":"Cr\u00e9ation d&rsquo;un plugin pour l&rsquo;\u00e9diteur de blocs WordPress (Gutenberg)"},"content":{"rendered":"\n<p>Si vous \u00eates nouveau dans l&rsquo;\u00e9diteur de blocs WordPress (Gutenberg), vous vous demandez peut-\u00eatre comment commencer \u00e0 cr\u00e9er votre propre plugin.<\/p>\n<p>Heureusement, l&rsquo;\u00e9quipe de d\u00e9veloppement WordPress a un <code>npm<\/code> <a href=\"https:\/\/www.npmjs.com\/package\/@wordpress\/create-block\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">script pratique pour vous permettre de cr\u00e9er un plugin de bloc<\/a> qui cr\u00e9e un bloc de d\u00e9marrage afin que vous puissiez rapidement \u00eatre op\u00e9rationnel.<\/p>\n<p>Par d\u00e9faut, le type de plugin WordPress cr\u00e9\u00e9 est un &quot;bloc&quot;, mais cela nous donne \u00e9galement un bon point de d\u00e9part pour d&rsquo;autres types de plugins Gutenberg.<\/p>\n<h2>Conditions pr\u00e9alables<\/h2>\n<ul>\n<li><a href=\"https:\/\/nodejs.org\/en\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Node doit \u00eatre install\u00e9 sur votre machine<\/a> pour que vous puissiez utiliser la <code>npm<\/code>commande (qui signifie Node Package Manager)<\/li>\n<li>Installer WordPress<\/li>\n<li>\u00c9diteur de codes<\/li>\n<li>Acc\u00e8s \u00e0 l&rsquo;a\u00e9rogare<\/li>\n<\/ul>\n<h2>Cr\u00e9ez votre plugin<\/h2>\n<p>Apr\u00e8s avoir install\u00e9 node sur votre machine, vous devriez avoir acc\u00e8s \u00e0 la <code>npm<\/code>commande dans votre terminal.<\/p>\n<p>Ouvrez votre terminal et assurez-vous que vous avez <code>cd<\/code>&lsquo;d (r\u00e9pertoire modifi\u00e9) dans le dossier plugins de votre installation WordPress (par exemple <code>cd wp-content\/plugins<\/code>).<\/p>\n<p>Une fois l\u00e0 lancez la commande suivante :<\/p>\n<pre><code>npm init @wordpress\/block\n<\/code><\/pre>\n<p>Cela t\u00e9l\u00e9chargera tout ce dont le script a besoin pour d\u00e9marrer la construction. Une fois termin\u00e9, le script vous posera une s\u00e9rie de questions n\u00e9cessaires \u00e0 la configuration de votre plugin.<\/p>\n<p>Utilisation du terminal pour ex\u00e9cuter le script de cr\u00e9ation<\/p>\n<h3>Questions de configuration<\/h3>\n<p>Le script posera les questions suivantes, voici mes exemples de r\u00e9ponses\u00a0:<\/p>\n<ul>\n<li>\n<p><strong>Le slug de bloc utilis\u00e9 pour l&rsquo;identification (\u00e9galement le nom du plugin et du dossier de sortie)<\/strong> \u2014 Je veux que mon bloc s&rsquo;appelle <code>Wholesome Plugin<\/code>, alors j&rsquo;ai entr\u00e9 <code>wholesome-plugin<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>L&rsquo;espace de noms interne pour le nom du bloc (quelque chose d&rsquo;unique pour vos produits)<\/strong> \u2014 Comme il devrait \u00eatre unique pour tous mes produits que j&rsquo;ai saisis <code>wholesomecode<\/code>, car il s&rsquo;agit du nom de ma soci\u00e9t\u00e9.<\/p>\n<\/li>\n<li>\n<p><strong>Le titre d&rsquo;affichage de votre bloc<\/strong> \u2014 j&rsquo;ai entr\u00e9 le titre du plugin, <code>Wholesome Plugin<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>La courte description de votre bloc (optionnel)<\/strong> \u2014 j&rsquo;ai saisi &quot; <code>An example plugin to demonstrate the create-block-script<\/code>&quot;.<\/p>\n<\/li>\n<li>\n<p><strong>Le dashicon pour faciliter l&rsquo;identification de votre bloc (optionnel)<\/strong> \u2014 Appelant rapidement la <a href=\"https:\/\/developer.wordpress.org\/resource\/dashicons\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ressource WordPress Dashicons<\/a>, j&rsquo;ai choisi <code>admin-plugins<\/code>car il a une ic\u00f4ne de plugin. N&rsquo;oubliez pas d&rsquo;omettre dashicon- du pr\u00e9fixe dashicon lors de cette op\u00e9ration.<\/p>\n<\/li>\n<li>\n<p><strong>Le nom de la cat\u00e9gorie pour aider les utilisateurs \u00e0 parcourir et d\u00e9couvrir votre bloc (utilisez les touches fl\u00e9ch\u00e9es)<\/strong> \u2014 j&rsquo;ai choisi <code>design<\/code>. Bien qu&rsquo;une cat\u00e9gorie personnalis\u00e9e conviendrait probablement mieux.<\/p>\n<\/li>\n<li>\n<p><strong>Le nom de l&rsquo;auteur du plugin (facultatif). Plusieurs auteurs peuvent \u00eatre r\u00e9pertori\u00e9s \u00e0 l&rsquo;aide de virgules<\/strong> &#8211; j&rsquo;ai entr\u00e9 <code>wholesomecode<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>Le nom abr\u00e9g\u00e9 de la licence du plug-in (facultatif)<\/strong> \u2014 J&rsquo;ai appuy\u00e9 sur Entr\u00e9e pour accepter la GPL v2.0 ou ult\u00e9rieure.<\/p>\n<\/li>\n<li>\n<p><strong>Un lien vers le texte int\u00e9gral de la licence (facultatif)<\/strong> \u2014 J&rsquo;ai appuy\u00e9 sur Entr\u00e9e pour ins\u00e9rer l&rsquo;URL de la licence GPL v2.0.<\/p>\n<\/li>\n<li>\n<p><strong>Le num\u00e9ro de version actuel du plugin<\/strong> \u2014 j&rsquo;ai appuy\u00e9 sur Entr\u00e9e pour ins\u00e9rer <code>0.1.0<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-168531-61e7d0d770fb3.png\" alt=\"Cr\u00e9ation d&#039;un plugin pour l&#039;\u00e9diteur de blocs WordPress (Gutenberg)\" \/>Questions sur la configuration des scripts<\/p>\n<p>Le script finira alors de s&rsquo;ex\u00e9cuter.<\/p>\n<h3>Qu&rsquo;est-ce qui vient juste de se passer?<\/h3>\n<p>Quelques \u00e9v\u00e9nements se produisent pendant l&rsquo;ex\u00e9cution du script, \u00e0 savoir\u00a0:<\/p>\n<ul>\n<li>Il cr\u00e9e le dossier du plugin,<\/li>\n<li>Il g\u00e9n\u00e8re tous les fichiers du plugin (<a href=\"https:\/\/wholesomecode.ltd\/#exploring-the-plugin\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">voir explorer le plugin pour les d\u00e9tails de ce qu&rsquo;ils font<\/a> )<\/li>\n<li>Il installe les d\u00e9pendances dont il a besoin, y compris le <code>@wordpress\/scripts<\/code>package (cela fait le gros du travail en termes de construction du plugin)<\/li>\n<li>Il compile le code<\/li>\n<li>Il affiche une liste de commandes que vous pouvez utiliser<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-168531-61e7d0d865300.png\" alt=\"Cr\u00e9ation d&#039;un plugin pour l&#039;\u00e9diteur de blocs WordPress (Gutenberg)\" \/>Construire des commandes<\/p>\n<p>Nous les explorerons davantage dans la section Explorer <a href=\"https:\/\/wholesomecode.ltd\/wp\/wp-admin\/post.php?post=4268&#038;action=edit#exploring-the-plugin\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">le plugin<\/a>.<\/p>\n<h2>Utilisation du plug-in<\/h2>\n<p>Avant de pouvoir utiliser le plugin, vous devez l&rsquo;activer. Vous pouvez le faire en choisissant <code>Plugins<\/code>dans le menu d&rsquo;administration de WordPress, puis en s\u00e9lectionnant <code>activate<\/code>sous le nom du plugin.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-168531-61e7d0d958ea6.gif\" alt=\"Cr\u00e9ation d&#039;un plugin pour l&#039;\u00e9diteur de blocs WordPress (Gutenberg)\" \/>Activer le plugin<\/p>\n<p>Vous devez maintenant modifier un article dans WordPress et ins\u00e9rer le plugin \u00e0 l&rsquo;aide de l&rsquo;\u00e9diteur Gutenberg.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-168531-61e7d0db497f6.gif\" alt=\"Cr\u00e9ation d&#039;un plugin pour l&#039;\u00e9diteur de blocs WordPress (Gutenberg)\" \/>Insertion du bloc dans un poteau<\/p>\n<p>Notez que le plugin ne fait pas grand chose par d\u00e9faut, il cr\u00e9e juste un Block. Il fournit cependant un cadre que vous pouvez utiliser pour cr\u00e9er votre propre plugin.<\/p>\n<h3>Affichage du bloc sur le front-end<\/h3>\n<p>Par d\u00e9faut, le bloc ressemble \u00e0 ceci sur le front-end. Notez qu&rsquo;il a une apparence l\u00e9g\u00e8rement diff\u00e9rente, ceci est d\u00e9lib\u00e9r\u00e9 afin que vous puissiez vous familiariser avec le CSS sur le front et le backend de WordPress.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-168531-61e7d0dd10fa2.png\" alt=\"Cr\u00e9ation d&#039;un plugin pour l&#039;\u00e9diteur de blocs WordPress (Gutenberg)\" \/>Le bloc sur le front-end<\/p>\n<h2>Explorer le plugin<\/h2>\n<p>L&rsquo;objectif de Create Block Script est de vous permettre de cr\u00e9er votre propre plugin. Explorons plus en d\u00e9tail les fichiers qu&rsquo;il a g\u00e9n\u00e9r\u00e9s\u00a0:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-168531-61e7d0de1777f.png\" alt=\"Cr\u00e9ation d&#039;un plugin pour l&#039;\u00e9diteur de blocs WordPress (Gutenberg)\" \/>Fichiers g\u00e9n\u00e9r\u00e9s<\/p>\n<p><strong><code>wholesome-plugin<\/code><\/strong>\u2014 C&rsquo;est le dossier racine du plugin, il a le m\u00eame nom que celui que j&rsquo;ai entr\u00e9 pour le &lsquo;slug&rsquo; dans les questions d&rsquo;installation.<\/p>\n<p><code>**\/build**<\/code>\u2014 Il s&rsquo;agit du dossier de construction. Il contient tous les actifs JavaScript et PHP g\u00e9n\u00e9r\u00e9s \u00e0 partir du <code>\/src<\/code>dossier. Ceux-ci sont mis en file d&rsquo;attente via le <code>wholesome-notes.php<\/code>fichier de chargement principal.<\/p>\n<p><code>**\/build\/index.assets.php**<\/code>\u2014 Ce fichier PHP est g\u00e9n\u00e9r\u00e9 automatiquement lors de la <code>\/src<\/code>compilation du dossier. Il contient un tableau de toutes les d\u00e9cences JavaScript de l&rsquo;\u00e9diteur WordPress (Gutenberg) utilis\u00e9es par votre plugin. Il est mis en file d&rsquo;attente via le <code>wholesome-plugin.php<\/code>fichier de chargement principal.<\/p>\n<p><code>**\/build\/index.css**<\/code>\u2014 Il s&rsquo;agit du fichier CSS de l&rsquo;\u00e9diteur, mis en file d&rsquo;attente via le <code>wholesome-plugin.php<\/code>fichier de chargement principal.<\/p>\n<p><code>**\/build\/index.js**<\/code>\u2014 Il s&rsquo;agit du fichier JavaScript compil\u00e9 principal et il est mis en file d&rsquo;attente via le <code>wholesome-plugin.php<\/code>fichier de chargement principal.<\/p>\n<p><code>**\/build\/style-index.css**<\/code>\u2014 Il s&rsquo;agit du fichier CSS frontal, mis en file d&rsquo;attente via le <code>wholesome-plugin.php<\/code>fichier de chargement principal.<\/p>\n<p><code>**\/build\/index.js.map**<\/code>\u2014 Ce fichier n&rsquo;est g\u00e9n\u00e9r\u00e9 que lorsque vous compilez les actifs pour le mode de d\u00e9veloppement (c&rsquo;est-\u00e0-dire que vous ex\u00e9cutez <code>npm start<\/code>et non <code>npm build<\/code>lorsque vous compilez vos actifs. C&rsquo;est un fichier utile pour les d\u00e9bogueurs JavaScript pour aider \u00e0 identifier les noms de fichiers et les num\u00e9ros de ligne si des erreurs se produisent.<\/p>\n<ul>\n<li>\n<p><code>**\/node_modules**<\/code>\u2014 Il s&rsquo;agit du dossier dans lequel toutes les d\u00e9pendances JavaScript de votre plugin sont install\u00e9es.<\/p>\n<\/li>\n<li>\n<p><code>**\/src**<\/code>\u2014 Il s&rsquo;agit du dossier qui contient tous les actifs non compil\u00e9s de votre plugin.<\/p>\n<\/li>\n<li>\n<p><code>**\/src\/edit.js**<\/code>\u2014 Il s&rsquo;agit de la fonction d&rsquo;\u00e9dition du bloc et contr\u00f4le la fa\u00e7on dont le bloc est affich\u00e9 dans l&rsquo;\u00e9diteur de bloc lorsqu&rsquo;il est en mode \u00e9dition.<\/p>\n<\/li>\n<li>\n<p><code>**\/src\/editor.scss**<\/code>&#8211; Ceci est le SCSS non compil\u00e9 pour l&rsquo;\u00e9diteur, il sera compil\u00e9 en <code>\/build\/index.css<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>**\/src\/index.js**<\/code>\u2014 Il s&rsquo;agit du principal fichier JavaScript non compil\u00e9 pour votre bloc WordPress Editor (Gutenberg). Il enregistre le bloc et contient les param\u00e8tres par d\u00e9faut.<\/p>\n<\/li>\n<li>\n<p><code>**\/src\/save.js**<\/code>\u2014 Il s&rsquo;agit de la fonction d&rsquo;enregistrement du bloc et contr\u00f4le le balisage du bloc lorsqu&rsquo;il est enregistr\u00e9.<\/p>\n<\/li>\n<li>\n<p><code>**\/src\/style.scss**<\/code>&#8211; Il s&rsquo;agit du SCSS non compil\u00e9 pour le frontal, il sera compil\u00e9 en <code>\/build\/style-index.css<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>**\/.editorconfig**<\/code>\u2014 Ce fichier contient des pr\u00e9r\u00e9glages utiles pour votre IDE (environnement de d\u00e9veloppement int\u00e9gr\u00e9), tels que Visual Studio Code.<\/p>\n<\/li>\n<li>\n<p><code>**\/.gitignore**<\/code>\u2014 Ce fichier indique \u00e0 git d&rsquo;ignorer certains fichiers lorsque vous vous engagez dans un r\u00e9f\u00e9rentiel git (tel que GitHub).<\/p>\n<\/li>\n<li>\n<p><code>**\/editor.css**<\/code>\u2014 Les styles de ce fichier sont sortis uniquement dans l&rsquo;\u00e9diteur, il est mis en file d&rsquo;attente via le <code>wholesome-notes.php<\/code>fichier de chargement principal.<\/p>\n<\/li>\n<li>\n<p><code>**\/block.json**<\/code>\u2014 Ce fichier d\u00e9finit le plugin afin qu&rsquo;il puisse \u00eatre d\u00e9couvert par la biblioth\u00e8que de blocs WordPress. Si vous apportez des modifications au plugin, assurez-vous que ce fichier est mis \u00e0 jour. Dans les versions plus r\u00e9centes du script NPM, ce fichier est utilis\u00e9 \u00e0 la place d&rsquo; <code>\/src\/index.js<\/code>enregistrer votre bloc.<\/p>\n<\/li>\n<li>\n<p><code>**\/package.json**<\/code>\u2014 Ce fichier contient toutes les d\u00e9pendances npm pour le plug-in et les commandes que vous pouvez ex\u00e9cuter. Notez que le plugin utilise <code>wp-scripts<\/code>( <code>@wordpress\/scripts<\/code>) comme base, donc initialement les d\u00e9pendances charg\u00e9es sont pour ce paquet.<\/p>\n<\/li>\n<li>\n<p><code>**\/readme.txt**<\/code>\u2014 Ce fichier est un fichier Lisez-moi du r\u00e9f\u00e9rentiel de plugins WordPress, qui est requis si vous souhaitez que le bloc soit r\u00e9pertori\u00e9 dans le r\u00e9f\u00e9rentiel de plugins.<\/p>\n<\/li>\n<li>\n<p><code>**\/wholesome-plugin.php**<\/code>\u2014 Il s&rsquo;agit du fichier de chargement principal du plugin. Son nom a \u00e9t\u00e9 d\u00e9fini via le &quot;slug&quot; que nous avons entr\u00e9 dans le script de configuration initial. Il met en file d&rsquo;attente tous les actifs JavaScript n\u00e9cessaires au plugin.<\/p>\n<\/li>\n<\/ul>\n<h3>Explorer les commandes de construction<\/h3>\n<p>Avant de pouvoir ex\u00e9cuter nos commandes de construction, nous devons nous assurer que nous sommes dans le dossier du plugin. Dans cet exemple, nous ex\u00e9cuterions <code>cd wholesome-plugin<\/code>dans le terminal pour changer de r\u00e9pertoire dans notre dossier de plug-in.<\/p>\n<p>Nous pouvons alors ex\u00e9cuter les commandes suivantes\u00a0:<\/p>\n<ul>\n<li>\n<p><code>**npm start**<\/code>\u2014 D\u00e9marre la construction pour le d\u00e9veloppement. Si vous apportez une modification au plug-in, vous devez le faire pour que les modifications s&rsquo;affichent (vous devrez probablement \u00e9galement actualiser votre navigateur).<\/p>\n<\/li>\n<li>\n<p><code>**npm run build**<\/code>\u2014 Construit le code pour la production. Faites-le si vous cr\u00e9ez une version finale du plugin.<\/p>\n<\/li>\n<li>\n<p><code>**npm run format:js**<\/code>\u2014 Formate automatiquement les fichiers JavaScript, en utilisant les meilleures pratiques.<\/p>\n<\/li>\n<li>\n<p><code>**npm run lint:css**<\/code>\u2014 Lints (recherche les erreurs dans) les fichiers CSS.<\/p>\n<\/li>\n<li>\n<p><code>**npm run lint:js**<\/code>\u2014 Lints (recherche les erreurs dans) les fichiers JavaScript.<\/p>\n<\/li>\n<li>\n<p><code>**npm run packages-update**<\/code>\u2014 Met \u00e0 jour les packages WordPress vers la derni\u00e8re version.<\/p>\n<\/li>\n<\/ul>\n<p>Nous utiliserons un ou plusieurs d&rsquo;entre eux lors de la modification du plugin.<\/p>\n<h2>Modification du plugin<\/h2>\n<p>Commen\u00e7ons par rendre notre bloc modifiable.<\/p>\n<h3>Ajouter des attributs \u00e0<code>\/src\/index.js<\/code><\/h3>\n<p>Ouvrez <code>\/src\/index.js<\/code>dans votre \u00e9diteur et ajoutez ce qui suit \u00e0 l&rsquo;int\u00e9rieur de la <code>registerBlockType<\/code>fonction, sous<code>apiVersion<\/code>\u00a0:<\/p>\n<pre><code>attributes: {\n  blockText: {\n    default: 'Wholesome Plugin \u2013 hello from the editor!',\n    type: 'string',\n  },\n},\n<\/code><\/pre>\n<p>Cela nous donnera un endroit pour stocker les donn\u00e9es dans notre plugin appel\u00e9 <code>blockText<\/code>accessible via la <code>attributes<\/code>propri\u00e9t\u00e9 (prop). Notez que nous lui avons donn\u00e9 par d\u00e9faut le texte original g\u00e9n\u00e9r\u00e9 par le script de cr\u00e9ation du plugin.<\/p>\n<h3>Ajouter RichText \u00e0<code>\/src\/edit.js<\/code><\/h3>\n<p>Ouvrez <code>\/src\/edit.js<\/code>dans votre \u00e9diteur et remplacez l&rsquo;importation pour <code>useBlockProps<\/code>par ce qui suit\u00a0:<\/p>\n<pre><code>import { RichText, useBlockProps } from '@wordpress\/block-editor';\n<\/code><\/pre>\n<p>Cela nous permettra d&rsquo;utiliser le composant RichText dans notre m\u00e9thode de rendu d&rsquo;\u00e9dition.<\/p>\n<p>Modifiez ensuite l&rsquo;ensemble de la fonction d&rsquo;\u00e9dition comme suit\u00a0:<\/p>\n<pre><code>export default function Edit( { attributes, setAttributes }) {\n    const { blockText } = attributes;\n    return (&lt;p { ...useBlockProps() }&gt;\n            &lt;RichText\n                className=\"block__text\"\n                keepPlaceholderOnFocus\n                onChange={ (blockText) =&gt; setAttributes( { blockText }) }\n                placeholder={ __( 'Block Text', 'wholesome-plugin') }\n                tagName=\"span\"\n                value={ blockText }\n            \/&gt;\n        &lt;\/p&gt;\n    );\n}\n<\/code><\/pre>\n<p>Cela d\u00e9finit la valeur du <code>RichText<\/code>composant pour qu&rsquo;elle soit la m\u00eame que celle stock\u00e9e dans l&rsquo; <code>blockText<\/code>attribut, et la <code>onChange<\/code>propri\u00e9t\u00e9 d\u00e9finit l&rsquo; <code>blockText<\/code>attribut sur ce qui a \u00e9t\u00e9 entr\u00e9 dans le <code>RichText<\/code>composant.<\/p>\n<h3>Sortez les attributs dans<code>\/src\/save.js<\/code><\/h3>\n<p>Ouvrez <code>\/src\/save.js<\/code>dans votre \u00e9diteur et remplacez la <code>save<\/code>fonction par ce qui suit\u00a0:<\/p>\n<pre><code>export default function save( { attributes }) {\n    const { blockText } = attributes;\n    return (&lt;p { ...useBlockProps.save() }&gt;\n            { blockText }\n        &lt;\/p&gt;\n    );\n}\n<\/code><\/pre>\n<p>Cela affiche simplement la valeur de <code>blockText<\/code>dans le paragraphe.<\/p>\n<h3>Compilation du plugin<\/h3>\n<p>Ouvrez le terminal, assurez-vous d&rsquo;\u00eatre dans le r\u00e9pertoire racine de votre plugin et lancez la commande suivante :<\/p>\n<p>Le script compilera. Si vous avez des erreurs, le terminal devrait vous en informer.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-168531-61e7d0df5e2a4.gif\" alt=\"Cr\u00e9ation d&#039;un plugin pour l&#039;\u00e9diteur de blocs WordPress (Gutenberg)\" \/>Construire le plugin<\/p>\n<h3>Insertion du plugin<\/h3>\n<p>Assurez-vous d&rsquo;avoir actualis\u00e9 votre message. La version pr\u00e9c\u00e9dente du bloc peut maintenant \u00eatre cass\u00e9e, c&rsquo;est tr\u00e8s bien, supprimez-la simplement et ins\u00e9rez-en une nouvelle.<\/p>\n<p>Ins\u00e9rez le bloc en utilisant le symbole plus en haut \u00e0 gauche de l&rsquo;\u00e9diteur, et lorsqu&rsquo;il est ins\u00e9r\u00e9, cliquez sur son texte. Tu devrais. maintenant \u00eatre en mesure de modifier le texte.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-168531-61e7d0e151e82.gif\" alt=\"Cr\u00e9ation d&#039;un plugin pour l&#039;\u00e9diteur de blocs WordPress (Gutenberg)\" \/>Insertion du bloc modifiable<\/p>\n<h3>Affichage du plug-in<\/h3>\n<p>Enregistrez le message et affichez-le sur le front-end du site Web, le texte que vous avez modifi\u00e9 doit \u00eatre affich\u00e9 \u00e0 la place du texte d&rsquo;origine.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-168531-61e7d0e327430.png\" alt=\"Cr\u00e9ation d&#039;un plugin pour l&#039;\u00e9diteur de blocs WordPress (Gutenberg)\" \/>Bloc modifiable sur le front-end du site Web<\/p>\n<p>Si vous souhaitez que vos blocs apparaissent dans une cat\u00e9gorie de blocs personnalis\u00e9s, ajoutez simplement le code suivant \u00e0 la racine de votre plugin (dans ce cas<code>wholesome-plugin.php<\/code>\u00a0:<\/p>\n<pre><code>function wholesomecode_wholesome_plugin_block_categories( $categories) {\n    return array_merge(\n        $categories,\n        [\n            [\n                'slug'  =&gt; 'wholesome-blocks',\n                'title' =&gt; __( 'Wholesome Blocks', 'wholesome-boilerplate' ),\n            ],\n        ]\n    );\n}\nadd_action( 'block_categories', 'wholesomecode_wholesome_plugin_block_categories', 10, 2 );\n<\/code><\/pre>\n<p>Cela enregistrera une cat\u00e9gorie de bloc personnalis\u00e9e dans votre insertion de bloc.<\/p>\n<p>Ensuite, tout ce que vous avez \u00e0 faire est d&rsquo;ajuster l&rsquo; <code>category<\/code>argument de la <code>registerBlockType<\/code>fonction dans <code>\/src\/index.js<\/code>pour faire r\u00e9f\u00e9rence \u00e0 votre cat\u00e9gorie de bloc et recompiler\u00a0:<\/p>\n<pre><code>\ncategory: 'wholesome-blocks',\n<\/code><\/pre>\n<p>Maintenant quand vous venez d&rsquo;ins\u00e9rer votre bloc, vous le trouverez dans votre cat\u00e9gorie de bloc nouvellement cr\u00e9\u00e9e :<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-168531-61e7d0e40fe2e.png\" alt=\"Cr\u00e9ation d&#039;un plugin pour l&#039;\u00e9diteur de blocs WordPress (Gutenberg)\" \/>Cat\u00e9gorie de bloc personnalis\u00e9e dans l&rsquo;outil d&rsquo;insertion de bloc<\/p>\n<ul>\n<li>Jetez un \u0153il \u00e0 <a href=\"https:\/\/wholesomecode.ltd\/guides\/php-render-block-wordpress-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">l&rsquo;utilisation de PHP pour rendre votre bloc avec des blocs dynamiques<\/a><\/li>\n<li>Envisagez d&rsquo; <a href=\"https:\/\/wholesomecode.ltd\/guides\/post-meta-fields-store-attributes-wordpress-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">utiliser les champs post-m\u00e9ta comme attributs dans votre bloc<\/a><\/li>\n<li><a href=\"https:\/\/wholesomecode.ltd\/guides\/add-sidebar-controls-to-your-custom-wordpress-block-with-inspectorcontrols\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Ajouter une barre lat\u00e9rale de bloc avec InspectorControls<\/a><\/li>\n<li>\u00c9tendez votre plugin en <a href=\"https:\/\/wholesomecode.ltd\/guides\/entry-points-wordpress-create-block-script\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ajoutant des points d&rsquo;entr\u00e9e suppl\u00e9mentaires au fichier webpack.config<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/wholesomecode.ltd\" class=\"external external_icon\">wholesomecode.ltd<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si vous \u00eates nouveau dans l&rsquo;\u00e9diteur de blocs WordPress (Gutenberg), vous vous demandez peut-\u00eatre comment commencer \u00e0 cr\u00e9er votre propre plugin. Heureusement, l&rsquo;\u00e9quipe de d\u00e9veloppement WordPress a un outil pratique &#8230;<\/p>\n","protected":false},"author":1,"featured_media":223619,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,717,936,748,801,811,841],"tags":[1167],"class_list":["post-228739","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-gutenberg-3","category-open-source-projektmanagement-2","category-php-3","category-plugins-2","category-tutoriels","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/228739","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=228739"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/228739\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/223619"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=228739"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=228739"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=228739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}