{"id":234209,"date":"2023-02-13T10:53:00","date_gmt":"2023-02-13T07:53:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=234209"},"modified":"2022-11-12T00:23:07","modified_gmt":"2022-11-11T21:23:07","slug":"comment-ajouter-des-champs-meta-de-publication-a-la-barre-laterale-du-document-gutenberg","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/comment-ajouter-des-champs-meta-de-publication-a-la-barre-laterale-du-document-gutenberg\/","title":{"rendered":"Comment ajouter des champs m\u00e9ta de publication \u00e0 la barre lat\u00e9rale du document Gutenberg"},"content":{"rendered":"\n<p>Dans cet article, nous verrons comment ajouter des param\u00e8tres m\u00e9ta de publication personnalis\u00e9s \u00e0 la barre lat\u00e9rale Gutenberg, dans l&rsquo;onglet &quot;Document&quot;, plut\u00f4t que de compter sur l&rsquo;ajout de bo\u00eetes m\u00e9ta de la mani\u00e8re traditionnelle (et tr\u00e8s honn\u00eatement beaucoup plus manuelle).<\/p>\n<p>Si vous avez travaill\u00e9 avec WordPress un certain temps avant que Gutenberg ne soit une chose, vous \u00eates probablement familier avec l&rsquo;ajout d&rsquo;une m\u00e9ta de publication personnalis\u00e9e avec <code>[add_meta_box](https:\/\/developer.wordpress.org\/reference\/functions\/add_meta_box\/)()<\/code>. Cette fonction vous permet d&rsquo;ajouter une bo\u00eete m\u00e9ta avec votre contenu personnalis\u00e9 soit en bas, soit sur le c\u00f4t\u00e9 lors de l&rsquo;\u00e9dition d&rsquo;un article. Cette m\u00e9thode fonctionne toujours, \u00e9galement dans l&rsquo;\u00e9diteur Gutenberg\u00a0!<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153559-61e51080f2022.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153559-61e51080f2022.png\" alt=\"Comment ajouter des champs m\u00e9ta de publication \u00e0 la barre lat\u00e9rale du document Gutenberg\" ><\/a><\/p>\n<p>Cependant, il semble un peu d\u00e9cal\u00e9 par rapport au reste du contenu de la barre lat\u00e9rale de Gutenberg. Et sans oublier, vous auriez besoin d&rsquo;\u00e9crire manuellement le code d&rsquo;entr\u00e9e (case \u00e0 cocher, entr\u00e9es de texte, etc.) avec PHP et \u00e9galement d&rsquo;\u00e9crire du code suppl\u00e9mentaire pour les enregistrer lorsque le message est mis \u00e0 jour. Et si vous vouliez que vos param\u00e8tres post-m\u00e9ta soient dynamiques (disons que vous vouliez masquer un champ \u00e0 moins qu&rsquo;un autre champ ne soit activ\u00e9), alors vous devriez mettre manuellement un script en file d&rsquo;attente et oui, vous l&rsquo;avez devin\u00e9, g\u00e9rer manuellement la logique dynamique de cacher et de montrer. Tout cela est d\u00e9sormais obsol\u00e8te et simplifi\u00e9 gr\u00e2ce au nouvel \u00e9diteur Gutenberg bas\u00e9 sur Javascript. On peut assez facilement faire quelque chose comme \u00e7a :<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153559-61e51081c74ff.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153559-61e51081c74ff.png\" alt=\"Comment ajouter des champs m\u00e9ta de publication \u00e0 la barre lat\u00e9rale du document Gutenberg\" ><\/a><\/p>\n<h2>Le processus<\/h2>\n<p>Le processus est le suivant :<\/p>\n<ul>\n<li>Nous enregistrons chaque cl\u00e9 m\u00e9ta de publication personnalis\u00e9e que nous voulons ajouter en PHP \u00e0 l&rsquo;aide de <code>[register_post_meta](https:\/\/developer.wordpress.org\/reference\/functions\/register_post_meta\/)()<\/code>, et la d\u00e9finissons comme disponible dans l&rsquo;API WP REST. Il s&rsquo;agit d&rsquo;une \u00e9tape n\u00e9cessaire pour rendre la m\u00e9ta de publication disponible dans l&rsquo;\u00e9diteur Gutenberg.<\/li>\n<li>Nous cr\u00e9ons un fichier Javascript et le mettons en file d&rsquo;attente sp\u00e9cifiquement pour l&rsquo;\u00e9diteur (uniquement).<\/li>\n<li>Dans le fichier Javascript, nous enregistrons un plugin en <code>[registerPlugin](https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-plugins\/#registerPlugin)()<\/code>lui disant de rendre notre composant.<\/li>\n<li>\u00c0 l&rsquo;int\u00e9rieur de ce composant, nous pouvons produire tout ce dont nous avons besoin. Nous pouvons utiliser les composants int\u00e9gr\u00e9s de WordPress pour rendre facilement diff\u00e9rents types de param\u00e8tres. Et en utilisant le package de donn\u00e9es WordPress, nous pouvons r\u00e9cup\u00e9rer et mettre \u00e0 jour les m\u00e9ta-valeurs de publication imm\u00e9diatement au fur et \u00e0 mesure qu&rsquo;elles sont modifi\u00e9es.<\/li>\n<\/ul>\n<p>Allons droit au but, en commen\u00e7ant par la partie PHP\u00a0; enregistrement de la post m\u00e9ta.<\/p>\n<h2>Enregistrement de post-m\u00e9ta<\/h2>\n<p>Pour chaque m\u00e9ta post que vous souhaitez ajouter \u00e0 la barre lat\u00e9rale de Gutenberg, vous devrez vous inscrire en utilisant <code>[register_post_meta](https:\/\/developer.wordpress.org\/reference\/functions\/register_post_meta\/)()<\/code>. Cela est n\u00e9cessaire pour les rendre disponibles via l&rsquo;API WP REST (que Gutenberg utilise) et donc disponibles dans notre Javascript.<\/p>\n<p>Dans le fichier de votre th\u00e8me <code>functions.php<\/code>ou dans un autre fichier PHP actif, ajoutez une fonction accroch\u00e9e au crochet &lsquo; <code>init<\/code>&lsquo;. Dans la fonction, vous r\u00e9p\u00e9tez a <code>register_post_meta()<\/code>pour chaque m\u00e9ta de publication personnalis\u00e9e que vous souhaitez ajouter. La fonction prend trois arguments ; Le premier param\u00e8tre est le type de publication pour lequel vous souhaitez enregistrer la m\u00e9ta (d\u00e9fini comme cha\u00eene vide pour tous les types de publication). Le deuxi\u00e8me param\u00e8tre est le nom de la cl\u00e9 m\u00e9ta pour votre m\u00e9ta. Et le troisi\u00e8me est un tableau de param\u00e8tres. C&rsquo;est ici que nous d\u00e9finissons que cette m\u00e9ta doit \u00eatre accessible dans l&rsquo;API WP REST en d\u00e9finissant &lsquo; <code>show_in_rest<\/code>&lsquo; sur true.<\/p>\n<p>Par exemple, disons que je veux ajouter une bascule marche\/arr\u00eat et une entr\u00e9e de texte dans la barre lat\u00e9rale de l&rsquo;\u00e9diteur. Cela signifie que j&rsquo;appelle <code>register_post_meta()<\/code>respectivement un bool\u00e9en et un type de valeur de cha\u00eene. Je souhaite \u00e9galement limiter ces post meta au type de publication &lsquo;post&rsquo; uniquement. Cela ressemblerait \u00e0 quelque chose comme :<\/p>\n<pre><code>add_action( 'init', function() {\n    register_post_meta( 'post', '_my_custom_bool', [\n        'show_in_rest' =&gt; true,\n        'single' =&gt; true,\n        'type' =&gt; 'boolean',\n    ] );\n\u00a0\n    register_post_meta( 'post', '_my_custom_text', [\n        'show_in_rest' =&gt; true,\n        'single' =&gt; true,\n        'type' =&gt; 'string',\n    ] );\n} );<\/code><\/pre>\n<p>Maintenant, j&rsquo;ai une cl\u00e9 m\u00e9ta post <code>_my_custom_bool<\/code>et <code>_my_custom_text<\/code>pr\u00eate et disponible dans Gutenberg. Je vous recommande de les renommer en quelque chose qui a du sens pour vous.<\/p>\n<h2>Enregistrement de notre plugin Javascript<\/h2>\n<p>Pour notre prochaine \u00e9tape, nous allons ajouter un fichier Javascript et nous assurer de le mettre en file d&rsquo;attente \u00e0 l&rsquo;aide de PHP.<\/p>\n<p>Gardez \u00e0 l&rsquo;esprit que j&rsquo;\u00e9cris le code Javascript dans la syntaxe ES6. Cela signifie que j&rsquo;ai mis en place une configuration webpack\/Babel pour compiler mon fichier dans un fichier Javascript lisible s\u00e9par\u00e9 pour le navigateur.<\/p>\n<p>J&rsquo;ai un guide sur la fa\u00e7on de configurer cela si vous n&rsquo;\u00eates pas s\u00fbr de la fa\u00e7on dont cela fonctionne:<\/p>\n<p>Nous devons nous assurer que WordPress charge notre script dans l&rsquo;\u00e9diteur. Pour ce faire, nous accrochons une fonction \u00e0 <code>enqueue_block_editor_assets<\/code>et appelons<code>[wp_enqueue_script](https:\/\/developer.wordpress.org\/reference\/functions\/wp_enqueue_script\/)()<\/code>\u00a0:<\/p>\n<pre><code>add_action( 'enqueue_block_editor_assets', function() {\n    wp_enqueue_script(\n        'awp-custom-meta-plugin', \n        get_template_directory_uri(). '\/assets\/js\/gutenberg\/plugin-awp-custom-postmeta.js', \n        [ 'wp-edit-post' ],\n        false,\n        false\n    );\n} );<\/code><\/pre>\n<p>Je suppose que vous savez comment mettre des scripts en file d&rsquo;attente et que vous pouvez remplacer les valeurs par les v\u00f4tres. Comme deuxi\u00e8me param\u00e8tre, je fournis le chemin vers le fichier de construction (pas le fichier source). Pour m&rsquo;assurer que notre script n&rsquo;est pas charg\u00e9 trop t\u00f4t, j&rsquo;ai d\u00e9fini &lsquo; <code>wp-edit-post<\/code>&lsquo; comme d\u00e9pendance. C&rsquo;est le package dont nous avons besoin pour g\u00e9rer la post-m\u00e9ta.<\/p>\n<p>Passons maintenant \u00e0 la partie Javascript.<\/p>\n<p>Nous devons d&rsquo;abord appeler <code>[registerPlugin](https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-plugins\/#registerPlugin)()<\/code>et transmettre notre composant pour rendre le panneau dans la barre lat\u00e9rale du document Gutenberg. Cette fonction est disponible dans le <code>wp.plugins<\/code>package, je la d\u00e9structure donc en haut. J&rsquo;aime garder mes fichiers bien rang\u00e9s, alors je cr\u00e9e un autre fichier ; &quot;awp-custom-postmeta-fields.js&quot; pour contenir le composant rendu et l&rsquo;importer.<\/p>\n<pre><code>const { registerPlugin } = wp.plugins;\n\u00a0\nimport AWP_Custom_Plugin from '.\/awp-custom-postmeta-fields';\n\u00a0\nregisterPlugin( 'my-custom-postmeta-plugin', {\n    render() {\n        return(&lt;AWP_Custom_Plugin \/&gt;);\n    }\n} );<\/code><\/pre>\n<h2>\u00c9crire notre composant<\/h2>\n<p>Commen\u00e7ons par cr\u00e9er un composant de base qui ne fait rien d&rsquo;autre que de s&rsquo;asseoir l\u00e0 au bon endroit, donc nous l&rsquo;\u00e9liminons d&rsquo;abord. Afin de rendre un composant dans la barre lat\u00e9rale Document de Gutenberg, nous utilisons le <code>[PluginDocumentSettingPanel](https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/slotfills\/plugin-document-setting-panel\/)<\/code>composant. Nous pouvons d\u00e9finir des attributs tels que a <code>title<\/code>, <code>icon<\/code>et <code>className<\/code>. Et tout ce qu&rsquo;il y a \u00e0 l&rsquo;int\u00e9rieur sera rendu dans la barre lat\u00e9rale du document. Pour l&rsquo;instant, je ne fais que sortir du texte &quot;Bonjour l\u00e0-bas&quot;.<\/p>\n<pre><code>const { __ } = wp.i18n;\nconst { PluginDocumentSettingPanel } = wp.editPost;\nconst { PanelRow } = wp.components;\n\u00a0\nconst AWP_Custom_Plugin =() =&gt; {\n    return(\n        &lt;PluginDocumentSettingPanel title={ __( 'My Custom Post meta', 'txtdomain') } initialOpen=\"true\"&gt;\n            &lt;PanelRow&gt;\n                Hello there.\n            &lt;\/PanelRow&gt;\n        &lt;\/PluginDocumentSettingPanel&gt;\n    );\n}\n\u00a0\nexport default AWP_Custom_Plugin;<\/code><\/pre>\n<p>Avec le code ci-dessus (compil\u00e9), on obtient ceci :<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153559-61e510828c932.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153559-61e510828c932.png\" alt=\"Comment ajouter des champs m\u00e9ta de publication \u00e0 la barre lat\u00e9rale du document Gutenberg\" ><\/a><\/p>\n<p>Impressionnant. Cependant, nous voulons ajouter quelques entr\u00e9es. Mais afin de connecter ces entr\u00e9es avec notre post m\u00e9ta personnalis\u00e9, nous devons composer notre composant avec les composants d&rsquo;ordre sup\u00e9rieur <code>withSelect<\/code>(pour r\u00e9cup\u00e9rer les post m\u00e9ta valeurs) et <code>withDispatch<\/code>(pour mettre \u00e0 jour les post m\u00e9ta valeurs). Cela peut sembler un peu complexe si vous n&rsquo;avez jamais travaill\u00e9 avec des composants d&rsquo;ordre sup\u00e9rieur auparavant, mais une fois que vous avez compris, c&rsquo;est assez simple.<\/p>\n<p>Nous devons d&rsquo;abord changer notre <code>export<\/code>d\u00e9claration. Plut\u00f4t que de simplement renvoyer notre composant seul, nous devons le composer avec <code>withSelect<\/code>et <code>withDispatch<\/code>, tous deux dans le <code>wp.data<\/code>package.<\/p>\n<p>\u00c0 l&rsquo; int\u00e9rieur <code>withSelect()<\/code>, nous avons acc\u00e8s \u00e0 la <code>select()<\/code>fonction puissante. En utilisant <code>select()<\/code>, nous pouvons r\u00e9cup\u00e9rer les m\u00e9ta-valeurs de la publication actuelle. Nous pouvons \u00e9galement r\u00e9cup\u00e9rer le type de publication actuel, si nous le souhaitons. Comme je l&rsquo;ai mentionn\u00e9 plus t\u00f4t lors de l&rsquo;enregistrement des m\u00e9tas de publication, nous pouvons limiter les m\u00e9tas de publication \u00e0 un type de publication sp\u00e9cifique. Si nous r\u00e9cup\u00e9rons le type de publication de la publication actuelle, nous pouvons dans notre composant nous assurer de ne rendre notre code que si nous sommes au bon type de publication. Plus sur cela plus tard.<\/p>\n<p>Dans <code>withDispatch()<\/code>nous pouvons d\u00e9finir des fonctions que nous pouvons ex\u00e9cuter dans notre composant. Nous cr\u00e9ons une fonction qui servira <code>dispatch()<\/code>\u00e0 mettre \u00e0 jour la post meta.<\/p>\n<p>Changeons la <code>export<\/code>d\u00e9claration en ceci:<\/p>\n<pre><code>export default compose( [\n    withSelect( (select) =&gt; {     \n        return {\n            postMeta: select( 'core\/editor' ).getEditedPostAttribute( 'meta' ),\n            postType: select( 'core\/editor' ).getCurrentPostType(),\n        };\n    } ),\n    withDispatch( (dispatch) =&gt; {\n        return {\n            setPostMeta( newMeta) {\n                dispatch( 'core\/editor' ).editPost( { meta: newMeta } );\n            }\n        };\n    }) ] )( AWP_Custom_Plugin );<\/code><\/pre>\n<p>Nous devons \u00e9galement les d\u00e9structurer \u00e0 partir des packages suivants en haut du fichier\u00a0:<\/p>\n<pre><code>const { compose } = wp.compose;\nconst { withSelect, withDispatch } = wp.data;<\/code><\/pre>\n<p>Avec cela, notre <code>AWP_Custom_Plugin<\/code>composant a acc\u00e8s \u00e0 trois nouveaux accessoires\u00a0; <code>postMeta<\/code>qui contient toutes les m\u00e9ta-valeurs de publication de la publication actuelle\u00a0; <code>postType<\/code>qui contient le type de publication de la publication actuelle\u00a0; et enfin la fonction <code>setPostMeta()<\/code>que nous avons cr\u00e9\u00e9e dans <code>withDispatch()<\/code>laquelle mettra \u00e0 jour la m\u00e9ta du message.<\/p>\n<p>Ainsi, dans notre d\u00e9finition de composant, nous pouvons d\u00e9structurer ces trois nouveaux accessoires\u00a0;<\/p>\n<pre><code>const AWP_Custom_Plugin = ({ postType, postMeta, setPostMeta }) =&gt; {\n...<\/code><\/pre>\n<p>Et maintenant, nous pouvons ajouter quelques entr\u00e9es \u00e0 notre rendu, en nous assurant qu&rsquo;elles affichent la valeur actuelle et qu&rsquo;elles mettent \u00e0 jour la m\u00e9ta post dans l&rsquo;\u00e9v\u00e9nement on change. J&rsquo;ai enregistr\u00e9 un bool\u00e9en et une cha\u00eene, donc \u00e0 titre d&rsquo;exemple, je vais ajouter un <code>ToggleControl<\/code>pour une bascule et un simple <code>TextControl<\/code>pour une entr\u00e9e de texte.<\/p>\n<p>Si vous n&rsquo;\u00eates pas s\u00fbr des composants int\u00e9gr\u00e9s dans WordPress, j&rsquo;ai un livre \u00e9lectronique enti\u00e8rement gratuit qui couvre \u00e0 peu pr\u00e8s la plupart des composants disponibles dans Gutenberg, y compris les accessoires que nous pouvons d\u00e9finir pour chacun.<\/p>\n<p>Voici un exemple de ce \u00e0 quoi notre composant pourrait ressembler\u00a0:<\/p>\n<pre><code>const { ToggleControl, TextControl, PanelRow } = wp.components;\n\u00a0\nconst AWP_Custom_Plugin = ({ postType, postMeta, setPostMeta }) =&gt; {\n    return(\n        &lt;PluginDocumentSettingPanel title={ __( 'My Custom Post meta', 'txtdomain') } icon=\"edit\" initialOpen=\"true\"&gt;\n            &lt;PanelRow&gt;\n                &lt;ToggleControl\n                    label={ __( 'You can toggle me on or off', 'txtdomain') }\n                    onChange={ (value) =&gt; setPostMeta( { _my_custom_bool: value }) }\n                    checked={ postMeta._my_custom_bool }\n                \/&gt;\n            &lt;\/PanelRow&gt;\n            &lt;PanelRow&gt;\n                &lt;TextControl\n                    label={ __( 'Write some text, if you like', 'txtdomain') }\n                    value={ postMeta._my_custom_text }\n                    onChange={ (value) =&gt; setPostMeta( { _my_custom_text: value }) }\n                \/&gt;\n            &lt;\/PanelRow&gt;\n        &lt;\/PluginDocumentSettingPanel&gt;\n    );\n}<\/code><\/pre>\n<p>\u00c0 la ligne <code>#9-10<\/code>et <code>#16-17<\/code>nous trouvons les parties critiques. Nous d\u00e9finissons la valeur actuelle des entr\u00e9es sur <code>postMeta.&lt;your meta key here&gt;<\/code>et dans leur \u00e9v\u00e9nement onChange, nous ex\u00e9cutons la fonction <code>setPostMeta( { &lt;your meta key here&gt;: ... } )<\/code>sur la nouvelle valeur mise \u00e0 jour.<\/p>\n<p>Enfin un mot sur la fa\u00e7on de limiter votre composant \u00e0 un type de publication sp\u00e9cifique. Dans notre <code>withSelect()<\/code>, nous passons le type de publication du message actuel dans le prop <code>postType<\/code>. Tout ce que nous avons \u00e0 faire dans notre composant est de comparer cette valeur \u00e0 un type de publication et de renvoyer null si elle ne correspond pas\u00a0:<\/p>\n<pre><code>const AWP_Custom_Plugin = ({ postType, postMeta, setPostMeta }) =&gt; {  \n    if ('post' !== postType) return null;  \/\/ Will only render component for post type 'post'\n\u00a0\n    return(\n    ...<\/code><\/pre>\n<p>Et c&rsquo;est tout! Notre code devrait maintenant fonctionner. Le r\u00e9sultat final devrait \u00eatre quelque chose comme :<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153559-61e51081c74ff.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153559-61e51081c74ff.png\" alt=\"Comment ajouter des champs m\u00e9ta de publication \u00e0 la barre lat\u00e9rale du document Gutenberg\" ><\/a><\/p>\n<h2>Code final<\/h2>\n<p>Enregistrement de la post-m\u00e9ta et mise en file d&rsquo;attente du fichier Javascript\u00a0:<\/p>\n<pre><code>add_action( 'init', function() {\n    register_post_meta( 'post', '_my_custom_bool', [\n        'show_in_rest' =&gt; true,\n        'single' =&gt; true,\n        'type' =&gt; 'boolean',\n    ] );\n\u00a0\n    register_post_meta( 'post', '_my_custom_text', [\n        'show_in_rest' =&gt; true,\n        'single' =&gt; true,\n        'type' =&gt; 'string',\n    ] );\n} );\n\u00a0\nadd_action( 'enqueue_block_editor_assets', function() {\n    wp_enqueue_script(\n        'awp-custom-meta-plugin', \n        get_template_directory_uri(). '\/assets\/js\/gutenberg\/plugin-awp-custom-postmeta.js', \n        [ 'wp-edit-post' ],\n        false,\n        false\n    );\n} );<\/code><\/pre>\n<p>Les deux fichiers Javascript\u00a0:<\/p>\n<pre><code>const { registerPlugin } = wp.plugins;\n\u00a0\nimport AWP_Custom_Plugin from '.\/awp-custom-postmeta-fields';\n\u00a0\nregisterPlugin( 'my-custom-postmeta-plugin', {\n    render() {\n        return(&lt;AWP_Custom_Plugin \/&gt;);\n    }\n} );<\/code><\/pre>\n<pre><code>const { __ } = wp.i18n;\nconst { compose } = wp.compose;\nconst { withSelect, withDispatch } = wp.data;\n\u00a0\nconst { PluginDocumentSettingPanel } = wp.editPost;\nconst { ToggleControl, TextControl, PanelRow } = wp.components;\n\u00a0\nconst AWP_Custom_Plugin = ({ postType, postMeta, setPostMeta }) =&gt; {\n    if ('post' !== postType) return null;  \/\/ Will only render component for post type 'post'\n    return(\n        &lt;PluginDocumentSettingPanel title={ __( 'My Custom Post meta', 'txtdomain') } icon=\"edit\" initialOpen=\"true\"&gt;\n            &lt;PanelRow&gt;\n                &lt;ToggleControl\n                    label={ __( 'You can toggle me on or off', 'txtdomain') }\n                    onChange={ (value) =&gt; setPostMeta( { _my_custom_bool: value }) }\n                    checked={ postMeta._my_custom_bool }\n                \/&gt;\n            &lt;\/PanelRow&gt;\n            &lt;PanelRow&gt;\n                &lt;TextControl\n                    label={ __( 'Write some text, if you like', 'txtdomain') }\n                    value={ postMeta._my_custom_text }\n                    onChange={ (value) =&gt; setPostMeta( { _my_custom_text: value }) }\n                \/&gt;\n            &lt;\/PanelRow&gt;\n        &lt;\/PluginDocumentSettingPanel&gt;\n    );\n}\n\u00a0\nexport default compose( [\n    withSelect( (select) =&gt; {     \n        return {\n            postMeta: select( 'core\/editor' ).getEditedPostAttribute( 'meta' ),\n            postType: select( 'core\/editor' ).getCurrentPostType(),\n        };\n    } ),\n    withDispatch( (dispatch) =&gt; {\n        return {\n            setPostMeta( newMeta) {\n                dispatch( 'core\/editor' ).editPost( { meta: newMeta } );\n            }\n        };\n    }) ] )( AWP_Custom_Plugin );<\/code><\/pre>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans cet article, nous verrons comment ajouter des param\u00e8tres m\u00e9ta de publication personnalis\u00e9s \u00e0 la barre lat\u00e9rale WordPress Gutenberg, dans l&rsquo;onglet \u00ab\u00a0Document\u00a0\u00bb.<\/p>\n","protected":false},"author":1,"featured_media":153560,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,893,717,717,832,936,936,1110,811,811,832,841,841,862,862],"tags":[1167],"class_list":["post-234209","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-guide-pour-les-debutants","category-gutenberg-3","category-n-a","category-plugins-2","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234209","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=234209"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/234209\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/153560"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=234209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=234209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=234209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}