{"id":233680,"date":"2023-02-20T16:17:00","date_gmt":"2023-02-20T13:17:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233680"},"modified":"2023-02-24T18:30:47","modified_gmt":"2023-02-24T15:30:47","slug":"lisage-wordpressi-gutenbergi-kohandatud-inspektori-kuelgriba-koos-post-metaga","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/lisage-wordpressi-gutenbergi-kohandatud-inspektori-kuelgriba-koos-post-metaga\/","title":{"rendered":"Lisage WordPressi Gutenbergi kohandatud inspektori k\u00fclgriba koos Post Metaga"},"content":{"rendered":"\n<p>Selles \u00f5petuses uurime, kuidas lisada WordPressi Gutenbergi inspektorile (parempoolsele k\u00fclgribale) kohandatud k\u00fclgriba. Sees rakendame v\u00e4lja, mis on \u00fchendatud postituse metaga. K\u00f5ik on rakendatud Javascriptiga, Gutenbergi redaktoris ja see on alternatiiv metakastide lisamisele traditsioonilisel viisil.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152503-61e4e03345086.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-152503-61e4e03345086.png\" alt=\"Lisage WordPressi Gutenbergi kohandatud inspektori k\u00fclgriba koos Post Metaga\"><\/a><\/p>\n<h3>Pea p\u00fcsti!<\/h3>\n<p>See on \u00f5petus oma kohandatud k\u00fclgriba loomisel. Aga kui olete huvitatud lihtsalt meta\/seadete lisamisest Inspectori standardsele k\u00fclgribale (vahekaart &quot;Dokument&quot;), on mul \u00f5petus t\u00e4pselt selle jaoks:<\/p>\n<h2>Mida me loome<\/h2>\n<p>WordPress Gutenberg v\u00f5imaldab arendajatel luua kohandatud k\u00fclgribasid, kasutades selleks niinimetatud Javascripti pistikprogrammi. (Mitte segi ajada traditsiooniliste WordPressi pistikprogrammidega). Javascripti pistikprogrammi abil saame luua uue k\u00fclgriba ja \u00fchendada selle ka men\u00fc\u00fcga &quot;T\u00f6\u00f6riistad ja suvandid&quot;.<\/p>\n<p>Lisame men\u00fc\u00fcsse &quot;T\u00f6\u00f6riistad&quot; uue men\u00fc\u00fcelemendi, mis avab meie kohandatud k\u00fclgriba. K\u00fclgriba sisu on t\u00e4ielikult teie otsustada, kuid ma toon l\u00e4bi m\u00f5ned n\u00e4ited, sealhulgas kuidas \u00fchendada postituse metav\u00e4li selle sees.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152503-61e4e0343f620.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-152503-61e4e0343f620.png\" alt=\"Lisage WordPressi Gutenbergi kohandatud inspektori k\u00fclgriba koos Post Metaga\"><\/a><\/p>\n<h2>Javascripti seadistamine<\/h2>\n<p>Selle \u00f5petuse jaoks kirjutan JSX-iga ES6\/ESNext Javascripti, mis t\u00e4hendab, et peame seadistama kompilaatori. Kui soovite teksti j\u00e4lgida ja mitte ES5 Javascripti kirjutada, peate seadistama arenduskeskkonna, mis teie Javascripti t\u00f6\u00f6 k\u00e4igus kompileerib. Kui te pole sellega tuttav, <a href=\"https:\/\/wordpress.mediadoma.com\/et\/taeielik-juhend-gutenbergi-arenduskeskkonna-seadistamiseks\/\" title=\"j\u00e4rgige minu postitust, milles selgitatakse, kuidas seda seadistada\">j\u00e4rgige minu postitust, milles selgitatakse, kuidas seda seadistada<\/a>, ja tulge siis siia tagasi.<\/p>\n<p>Olen seadistanud <code>webpack.config.js<\/code>oma l\u00e4htekoodi Javascripti faili oma teemakausta kompileerima <code>\/assets\/js\/sidebar-plugin.js<\/code>. See koostatud fail on see, mida peame Gutenbergi redaktorisse j\u00e4rjekorda panema. Selle koodi kirjutamise ajal k\u00e4ivitasin k\u00e4itusaegse kompilaatori, mis kompileerib Javascripti uuesti iga kord, kui salvestan l\u00e4htekoodi muudatused (<code>npm run start<\/code>). K\u00f5ike seda selgitatakse p\u00f5hjalikult eelnevalt mainitud \u00f5petuses.<\/p>\n<p>Kirjutan seda teemas, kuid see t\u00f6\u00f6tab samamoodi ka pistikprogrammis. \u00c4rge unustage skripti redaktorisse lisamisel teid kohandada.<\/p>\n<h2>Skripti lisamine redaktorisse<\/h2>\n<p>Skripti lisamiseks Gutenbergi redaktorisse peame kirjutama PHP. Kui olete teemas, <code>functions.php<\/code>on see hea koht alustamiseks v\u00f5i kuhugi pistikprogrammi failidesse. Pange t\u00e4hele, et peame lisama l\u00f5pliku kompileeritud skripti, mitte l\u00e4htekoodi. Minu n\u00e4ites asub kompileeritud Javascript minu teemakaustas <code>\/assets\/js\/sidebar-plugin.js<\/code>.<\/p>\n<p>Loome funktsiooni, mis on \u00fchendatud <code>enqueue_block_editor_assets<\/code>. Toas teeme tavalist <code>[wp_enqueue_script](https:\/\/developer.wordpress.org\/reference\/functions\/wp_enqueue_script\/)()<\/code>. Skripti s\u00f5ltuvustena lisame kaks; <code>wp-plugins<\/code>ja <code>wp-edit-post<\/code>. Need kaks paketti tuleb laadida enne meie skripti, kuna kasutame nende funktsioone.<\/p>\n<pre><code>add_action('enqueue_block_editor_assets', function() {\n    wp_enqueue_script('awp-sidebar-plugin', get_stylesheet_directory_uri(). '\/assets\/js\/sidebar-plugin.js', ['wp-plugins', 'wp-edit-post']);\n});<\/code><\/pre>\n<p>Kuna paneme skripti konksu j\u00e4rjekorda, <code>enqueue_block_editor_assets<\/code>laaditakse meie skript ainult siis, kui Gutenbergi redaktor on aktiivne. Suurep\u00e4rane! N\u00fc\u00fcd on k\u00f5ik meie Javascripti pistikprogrammi kirjutamiseks valmis.<\/p>\n<h2>Registreerige Javascripti pistikprogramm<\/h2>\n<p>Esimene samm on plugina registreerimine. Teeme seda <code>[registerPlugin](https:\/\/github.com\/WordPress\/gutenberg\/tree\/master\/packages\/plugins#registerPlugin)<\/code>funktsiooniga wp.plugins paketi seest <code>wp.plugins<\/code>.<\/p>\n<p>RegistrPlugini parameetrina anname nime (veenduge, et see oleks kordumatu) ja seadistustega objekti. V\u00e4hemalt peate esitama renderdusatribuudi komponendi. Soovi korral saate lisada ikooni ka <a href=\"https:\/\/developer.wordpress.org\/resource\/dashicons\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPressi armatuurlaualt<\/a>. Pidage meeles, et kui te ikooni ei m\u00e4\u00e4ra, muutub see tagasi pistikprogrammi ikooniks. Demonstreerimiseks kasutan <code>'carrot'<\/code>ikooni.<\/p>\n<p>Mis puutub komponenti, siis alustame p\u00f5hikomponendi m\u00e4\u00e4ratlemisest, mis tagastab lihtsa div koos m\u00f5ne juhusliku tekstiga. Ja enne kogu koodi destruktureerime funktsioonid pakettidest, mida soovime kasutada.<\/p>\n<pre><code>const { registerPlugin } = wp.plugins;\n\u00a0\nconst CustomSidebarComponent =() =&gt; {\n    return(\n        &lt;div&gt;Hey!&lt;\/div&gt;\n    );\n}\n\u00a0\nregisterPlugin('awp-customsidebar', {\n    render: CustomSidebarComponent,\n    icon: 'carrot'\n});<\/code><\/pre>\n<p>Kui Gutenbergi v\u00e4rskendamisel midagi ei juhtu (isegi mitte t\u00f5rkeid), oleme k\u00f5ik valmis minema. Me ei n\u00e4e oma komponenti, kuna me pole WordPressile \u00f6elnud, kus seda renderdada. J\u00e4rgmine samm on meie asjade renderdamiseks kohandatud k\u00fclgriba men\u00fc\u00fc ja t\u00f6\u00f6riistade men\u00fc\u00fckomponentide \u00fchendamine.<\/p>\n<h2>Registreerige kohandatud k\u00fclgriba<\/h2>\n<p>Kuid k\u00f5igepealt selgitus selle kohta, kuidas Gutenberg kohandatud k\u00fclgribasid k\u00e4sitleb ja miks me peame tegema seda, mida me teeme. Kui registreerime kohandatud k\u00fclgriba edukalt, juhtub alguses automaatselt \u00fcks asi. Gutenberg lisab meie k\u00fclgribale otsetee \u00fclemisele t\u00f6\u00f6riistaribale, men\u00fc\u00fc T\u00f6\u00f6riistad k\u00f5rvale. See juhtub, kuna meie k\u00fclgriba &quot;kinnitatakse&quot; automaatselt.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152503-61e4e0353bff7.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-152503-61e4e0353bff7.png\" alt=\"Lisage WordPressi Gutenbergi kohandatud inspektori k\u00fclgriba koos Post Metaga\"><\/a><\/p>\n<p>Kohandatud k\u00fclgriba lisamise probleem seisneb selles, et iga kasutaja saab selle otsetee lahti \u00fchendada. Kui nad seda teevad, pole k\u00fclgriba uuesti avamiseks juurdep\u00e4\u00e4supunkti! Seet\u00f5ttu peame men\u00fc\u00fcsse T\u00f6\u00f6riistad lisama ka men\u00fc\u00fcelemendi.<\/p>\n<p>Kohandatud k\u00fclgriba registreerimine toimub paketis oleva <code>PluginSidebar<\/code>komponendiga <code>wp.editPost<\/code>. Men\u00fc\u00fcelemendi lisamine men\u00fc\u00fcsse T\u00f6\u00f6riistad toimub sobiva nimega komponendiga <code>PluginSidebarMoreMenuItem<\/code>(samuti <code>wp.editPost<\/code>pakendis).<\/p>\n<p>Komponendi jaoks <code>PluginSidebar<\/code>peame pakkuma m\u00f5ned rekvisiidid. Peaksite esitama minimaalselt <code>name<\/code>ja <code>title<\/code>. Rekvisiit <code>title<\/code>on iseenesestm\u00f5istetav, see on nimi, mis kuvatakse k\u00fclgriba \u00fclaosas. In prop <code>name<\/code>pakkuda unikaalne n\u00e4lkjas. Men\u00fc\u00fcelemendi lisamisel peate viitama sellele n\u00e4lkjale.<\/p>\n<p><code>PluginSidebarMoreMenuItem<\/code>(T\u00f6\u00f6riistamen\u00fc\u00fc) komponendi lisamiseks on vaja v\u00e4hemalt \u00fchte tugipunkti; <code>target<\/code>. Siin sisestate sama nime, mille andsite k\u00fclgriba <code>name<\/code>rekvisiidis. Komponendi sisuks kirjutate teksti, mis kuvatakse men\u00fc\u00fcelemendina. Tavaliselt on see sama, mis k\u00fclgriba oma <code>title<\/code>.<\/p>\n<p>Kuna React n\u00f5uab \u00fchte m\u00e4hkimiss\u00f5lme komponendi tagasivoolu \u00fcmber, m\u00e4hime k\u00f5ik <code>Fragment<\/code>komponendi sisse (<code>wp.element<\/code>pakendist). Pakkin ka oma n\u00f6\u00f6rid pakendist sisse <code>__()<\/code>, <code>wp.i18n<\/code>et oleks v\u00f5imalik t\u00f5lkida.<\/p>\n<pre><code>const { registerPlugin } = wp.plugins;\nconst { __ } = wp.i18n;\nconst { Fragment } = wp.element;\nconst { PluginSidebarMoreMenuItem, PluginSidebar } = wp.editPost;\n\u00a0\nconst CustomSidebarComponent =() =&gt; {\n    return(\n        &lt;Fragment&gt;\n            &lt;PluginSidebar \n                name=\"awp-custom-sidebar\" \n                title={__('My Custom sidebar', 'awp')}\n            &gt;Hello there.&lt;\/PluginSidebar&gt;\n            &lt;PluginSidebarMoreMenuItem \n                target='awp-custom-sidebar'\n                &gt;{__('My Custom sidebar', 'awp')}&lt;\/PluginSidebarMoreMenuItem&gt;\n        &lt;\/Fragment&gt;\n    );\n}\n\u00a0\nregisterPlugin('awp-customsidebar', {\n    render: CustomSidebarComponent,\n    icon: 'carrot'\n});<\/code><\/pre>\n<p>\u00dclaltoodud koodiga saame juhtuma j\u00e4rgmised kaks (t\u00f5en\u00e4oliselt kolm) asja. T\u00f6\u00f6riistaribale ilmub porgandiikooni otsetee (kui te pole seda veel vabastanud). Sellel kl\u00f5psates avaneb k\u00fclgriba. Samuti saate t\u00f6\u00f6riistamen\u00fc\u00fc k\u00fclgribale uue men\u00fc\u00fcelemendi pealkirja &quot;Pluginad&quot; all.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152503-61e4e036136de.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-152503-61e4e036136de.png\" alt=\"Lisage WordPressi Gutenbergi kohandatud inspektori k\u00fclgriba koos Post Metaga\"><\/a><\/p>\n<h2>Sisu lisamine k\u00fclgribale<\/h2>\n<p>K\u00fclgriba tegelik sisu on t\u00e4ielikult teie otsustada. Peate lihtsalt lisama HTML-i v\u00f5i komponendi sees olevaid <code>PluginSidebar<\/code>komponente, mida iganes soovite (teksti &quot;Tere&quot; asemel).<\/p>\n<p>V\u00f5ite m\u00e4rgata, et k\u00fclgriba sisul puudub polster. See on tahtlik, sest idee on see, et loote selle k\u00fclgriba sees paneelid. Paneelid on tavalise Gutenbergi k\u00fclgriba kokkupandavad sektsioonid. Need on komponendid, mida saate oma kohandatud k\u00fclgribale v\u00e4ga lihtsalt lisada. Saate lisada nii palju paneele, kui soovite ja need sobivad suurep\u00e4raselt erinevate asjade r\u00fchmitamiseks.<\/p>\n<h3>Paneelide lisamine meie k\u00fclgribale<\/h3>\n<p>Vaatame kiiresti, kuidas saame oma k\u00fclgribale paneele lisada. Kui olete loonud oma kohandatud plokit\u00fc\u00fcbid, v\u00f5ite olla nende komponentidega tuttav. Kasutame ja <code>PanelBody<\/code>valikuliselt pakendist.<code>PanelRow``wp.components<\/code><\/p>\n<p>Komponendi jaoks <code>PanelBody<\/code>esitate v\u00e4hemalt prop <code>title<\/code>. Soovi korral saate <code>initialOpen<\/code>rekvisiidile m\u00e4\u00e4rata t\u00f5ese v\u00f5i v\u00e4\u00e4ra, et otsustada, kas paneeli tuleks vaikimisi laiendada v\u00f5i mitte. Komponendi sees olev sisu on k\u00f5ik paneeli sees.<\/p>\n<p>Sees <code>PanelBody<\/code>saate valikuliselt kasutada <code>PanelRow<\/code>komponente. Need pole tegelikult vajalikud, kuid aitavad teil oma paneeli sisule hea stiili kujundada.<\/p>\n<p>N\u00e4iteks lisame oma kohandatud k\u00fclgribale kaks paneeli.<\/p>\n<pre><code>const { registerPlugin } = wp.plugins;\nconst { __ } = wp.i18n;\nconst { Fragment } = wp.element;\nconst { PluginSidebarMoreMenuItem, PluginSidebar } = wp.editPost;\nconst { PanelBody, PanelRow } = wp.components;\n\u00a0\nconst CustomSidebarComponent = () =&gt; {\n    return(\n        &lt;Fragment&gt;\n            &lt;PluginSidebarMoreMenuItem \n                target='awp-custom-sidebar'\n                &gt;{__('My Custom sidebar', 'awp')}&lt;\/PluginSidebarMoreMenuItem&gt;\n            &lt;PluginSidebar \n                name=\"awp-custom-sidebar\" \n                title={__('My Custom sidebar', 'awp')}\n            &gt;                \n                &lt;PanelBody\n                    title={__('This is a panel section', 'awp')}\n                    initialOpen={true}\n                &gt;\n                    &lt;PanelRow&gt;\n                        Put any component or content here.\n                    &lt;\/PanelRow&gt;\n                &lt;\/PanelBody&gt;\n                &lt;PanelBody\n                    title={__('Another section', 'awp')}\n                    initialOpen={false}\n                &gt;\n                    &lt;PanelRow&gt;\n                        This is a collapsed section by default.\n                    &lt;\/PanelRow&gt;\n                &lt;\/PanelBody&gt;\n            &lt;\/PluginSidebar&gt;\n        &lt;\/Fragment&gt;\n    );\n}\n\u00a0\nregisterPlugin('awp-customsidebar', {\n    render: CustomSidebarComponent,\n    icon: 'carrot'\n});<\/code><\/pre>\n<p>Selle koodiga hakkab meie kohandatud k\u00fclgriba t\u00f5esti v\u00e4lja n\u00e4gema, nagu see kuuluks Gutenbergi!<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152503-61e4e036ce025.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-152503-61e4e036ce025.png\" alt=\"Lisage WordPressi Gutenbergi kohandatud inspektori k\u00fclgriba koos Post Metaga\"><\/a><\/p>\n<h2>Postituse metav\u00e4ljade lisamine kohandatud k\u00fclgribale<\/h2>\n<p>N\u00fc\u00fcd hakkame t\u00f5esti tutvuma kohandatud k\u00fclgriba kasulike asjadega; seadete lisamine ja nende v\u00e4\u00e4rtuste salvestamine. Kuid k\u00f5igepealt peame m\u00f5istma, kuidas.<\/p>\n<p>Seadev\u00e4lju (sisendid, m\u00e4rkeruudud, l\u00fclitusv\u00e4ljad jne) on k\u00fclgribale v\u00e4ga lihtne lisada, kasutades WordPressi pakettide kasutusvalmis komponente. Siiski peame kaaluma, kuidas v\u00e4\u00e4rtusi salvestada. Ilmselge v\u00f5imalus on salvestada need post metana. Kuid s\u00e4tte \u00fchendamine postituse metav\u00e4ljaga n\u00f5uab lisakoodi. T\u00e4psemalt peame Javascripti sees posti meta toomiseks ja v\u00e4rskendamiseks kasutama niinimetatud <a href=\"https:\/\/reactjs.org\/docs\/higher-order-components.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">k\u00f5rgema j\u00e4rgu komponente .<\/a> Samuti peame registreerima iga postituse meta PHP-ga ja tegema need REST API-le k\u00e4ttesaadavaks.<\/p>\n<p>Selle \u00f5petuse l\u00f5pus n\u00e4itan, kuidas lisada postituse meta v\u00f5tmega <code>awp_my_custom_meta<\/code>, mis tuleks salvestada kas t\u00f5ese v\u00f5i valena. K\u00fclgribal kuvatakse see l\u00fclitusv\u00e4ljana (t\u00f5ene\/v\u00e4\u00e4r komponent).<\/p>\n<h3>Registreerige postituse meta REST API jaoks<\/h3>\n<p>Esimene samm postituse meta lisamiseks meie Javascripti faili on nende registreerimine ja nende m\u00e4\u00e4ratlemine REST API-s juurdep\u00e4\u00e4setavaks. Selleks p\u00f6\u00f6rdume uuesti PHP juurde.<\/p>\n<p>Toiminguga \u00fchendatud funktsiooni sees <code>init<\/code>kasutame <code>[register_meta](https:\/\/developer.wordpress.org\/reference\/functions\/register_meta\/)()<\/code>funktsiooni. Parameetritena peame m\u00e4\u00e4rama objekti t\u00fc\u00fcbiks &quot; <code>post<\/code>&quot;, kuna me kasutame seda postituse metana (see ei v\u00e4lista nt lehe postituse t\u00fc\u00fcpi). Pakume metav\u00f5tit ja seej\u00e4rel argumentide massiivi. Kriitiline asi, mida argumentide massiivi lisada, on seadistus &quot; <code>show_in_rest<\/code>&quot; v\u00e4\u00e4rtusele <code>true<\/code>. Postituse metat kasutatakse tavaliselt kui &quot; <code>single<\/code>&quot; (m\u00f5elge, kuidas kasutate <code>get_post_meta()<\/code>). Samuti m\u00e4\u00e4ratleme <code>type<\/code>. Meie juhtumi puhul m\u00e4\u00e4rasime selle v\u00e4\u00e4rtuseks &quot; <code>boolean<\/code>&quot;.<\/p>\n<pre><code>add_action('init', function() {\n    register_meta('post', 'awp_my_custom_meta', [\n        'show_in_rest' =&gt; true,\n        'single' =&gt; true,\n        'type' =&gt; 'boolean'\n    ]);\n});<\/code><\/pre>\n<p>Selle koodiga <code>awp_my_custom_meta<\/code>on Gutenbergist juurdep\u00e4\u00e4setav postituse metav\u00e4li. Peate kordama <code>register_meta()<\/code>iga postituse meta puhul, mida soovite oma k\u00fclgribale lisada.<\/p>\n<p>N\u00fc\u00fcd p\u00f6\u00f6rdume tagasi meie Javascripti juurde.<\/p>\n<h3>Seade lisamine meie k\u00fclgribale<\/h3>\n<p>Alustame lihtsast osast: sisendi lisamine meie k\u00fclgribale. Hiljem lisame rohkem koodi, et tegelikult \u00fchendada seadistusv\u00e4li postitamise metaga. T\u00e4nu sellele, kuidas me seda tegema peame, m\u00e4\u00e4ratleme oma seade jaoks eraldi uue komponendi. Nii et paneeli sees soovite oma seaded lisada, helistage lihtsalt sellele uuele komponendile.<\/p>\n<p>Kutsume komponenti <code>CustomSidebarMetaComponent<\/code>(v\u00f5ite nimetada seda oma projekti jaoks oluliseks). Selle komponendi sees tahame renderdada l\u00fclitusv\u00e4lja. Selleks kasutame pakendis olevat <code>ToggleControl<\/code>komponenti. <code>wp.components<\/code>ToggleControli rekvisiidina pakume rekvisiidile sobivat silti <code>title<\/code>. ToggleControl vajab ka rekvisiite <code>onChange<\/code>v\u00e4\u00e4rtuse v\u00e4rskendamiseks ja <code>checked<\/code>praeguse v\u00e4\u00e4rtuse jaoks. J\u00e4tame need kaks praegu kuni j\u00e4rgmise sammuni v\u00e4lja.<\/p>\n<pre><code>...\nconst { PanelBody, PanelRow, ToggleControl } = wp.components;\n\u00a0\nconst CustomSidebarMetaComponent = () =&gt; {\n    return(\n        &lt;ToggleControl\n            label={__('My custom post meta', 'awp')}\n        \/&gt;\n    );\n}\n\u00a0\nconst CustomSidebarComponent = () =&gt; {\n    return(\n        ...       \n        &lt;PanelBody\n            title={__('This is a panel section', 'awp')}\n            initialOpen={true}\n        &gt;\n            &lt;PanelRow&gt;\n                &lt;CustomSidebarMetaComponent \/&gt;\n            &lt;\/PanelRow&gt;\n        &lt;\/PanelBody&gt;\n        ...<\/code><\/pre>\n<p>\u00dclaltoodud koodiga peaksite saama k\u00fclgribal l\u00fclitusv\u00e4lja. See on m\u00e4rkimata ja sellel kl\u00f5psamisel ei juhtu midagi. See on j\u00e4rgmine samm: \u00fchendage see meie postitusmetaga.<\/p>\n<h3>Juurdep\u00e4\u00e4s postituse metale funktsioonidega withSelect ja withDispatch<\/h3>\n<p>Postituse metav\u00e4\u00e4rtusele juurdep\u00e4\u00e4suks ja v\u00e4rskendamiseks peame kasutama WordPressi kaupluste versioonile juurdep\u00e4\u00e4suks k\u00f5rgema j\u00e4rgu komponente (HOC) (sarnaselt Reduxiga). WordPress pakub meile kasulikke HOC-i koos funktsioonidega, mida saame <code>wp.data<\/code>paketis kasutada.<\/p>\n<p>K\u00f5rgemat j\u00e4rku komponent <code>[withSelect](https:\/\/developer.wordpress.org\/block-editor\/packages\/packages-data\/#withSelect)<\/code>on varustada meie komponenti rekvisiitidega, mis on meie puhul toodud post metast. Kasutame seda oma postitusmeta v\u00e4\u00e4rtuse saamiseks. Sees <code>withSelect<\/code>saame kasutada <code>select('core\/editor').getEditedPostAttribute('meta')<\/code>praeguse postituse meta toomiseks.<\/p>\n<p>Teisest k\u00fcljest <code>[withDispatch](https:\/\/developer.wordpress.org\/block-editor\/packages\/packages-data\/#withDispatch)<\/code>on see k\u00f5rgema j\u00e4rgu komponent, mis suudab toiminguid teha. Meie puhul tahame postituse metat v\u00e4rskendada, kui meie k\u00fclgribal vastavat v\u00e4ljaseadet muudetakse. Selle komponendi sees kasutame <code>dispatch('core\/editor').editPost()<\/code>WordPressi teavitamiseks toimingu saatmisest. Meie pakutava objekti sees \u00fctleme WordPressile, et see on meta, mida tahame v\u00e4rskendada.<\/p>\n<p>L\u00f5puks peame \u00fchendama <code>withSelect<\/code>ja <code>withDispatch<\/code>oma komponendiga, mis k\u00e4sitleb posti metav\u00e4lja (<code>CustomSidebarMetaComponent<\/code>). Selleks kasutame WordPressi <code>compose<\/code>paketist <code>wp.compose<\/code>. Idee on selles, et <code>withSelect<\/code>ja <code>withDispatch<\/code>varustab meie <code>CustomSidebarMetaComponent<\/code>komponenti rekvisiitidega. <code>withSelect<\/code>pakub post-meta v\u00e4\u00e4rtust propina ja <code>withDispatch<\/code>funktsiooni, mida saame kutsuda, et v\u00e4\u00e4rtust propina v\u00e4rskendada. Seadsime need rekvisiidid vastavalt oma ToggleFieldile <code>checked<\/code>ja <code>onChange<\/code>.<\/p>\n<p>See on palju seletamist. Vaatame tegelikku koodi:<\/p>\n<pre><code>...\nconst { compose } = wp.compose;\nconst { withDispatch, withSelect } = wp.data;\n\u00a0\nconst CustomSidebarMetaComponent = (props) =&gt; {\n    return(\n        &lt;ToggleControl\n            label={__('My custom post meta', 'awp')}\n            checked={props.customPostMetaValue}\n            onChange={props.setCustomPostMeta}\n        \/&gt;\n    );\n}\n\u00a0\nconst CustomSidebarMeta = compose([\n    withSelect(select =&gt; {\n        return { customPostMetaValue: select('core\/editor').getEditedPostAttribute('meta')['awp_my_custom_meta'] }\n    }),\n    withDispatch(dispatch =&gt; {\n        return { \n            setCustomPostMeta: function(value) {\n                dispatch('core\/editor').editPost({ meta: { awp_my_custom_meta: value } });\n            }\n        }\n    })\n])(CustomSidebarMetaComponent);\n\u00a0\nconst CustomSidebarComponent = () =&gt; {\n    return(\n        ...\n        &lt;PanelBody\n            title={__('This is a panel section', 'awp')}\n            initialOpen={true}\n        &gt;\n            &lt;PanelRow&gt;\n                &lt;CustomSidebarMeta \/&gt;\n            &lt;\/PanelRow&gt;\n        &lt;\/PanelBody&gt;\n        ...<\/code><\/pre>\n<p>Alustame algusest. Mis on allosas. Real <code>#36<\/code>muudame k\u00fclgribal renderdatava komponendi komponendiks, mille abil l\u00f5ime <code>compose<\/code>(real <code>#15<\/code>). Komponent <code>CustomSidebarMeta<\/code>\u00fchendab komponendid <code>withSelect<\/code>ja <code>withDispatch<\/code>ning tagastab <code>CustomSidebarMetaComponent<\/code>.<\/p>\n<p>Tahvel <code>CustomSidebarMetaComponent<\/code>on juurdep\u00e4\u00e4s <code>customPostMetaValue<\/code>rekvisiitidele <code>withSelect<\/code>ja <code>setCustomPostMeta<\/code>rekvisiitidele, <code>withDispatch<\/code>mida me kasutame atribuutide <code>checked<\/code>ja <code>onChange<\/code>rekvisiitide jaoks <code>ToggleField<\/code>.<\/p>\n<p>Pange t\u00e4hele, et real <code>#5<\/code>lisame <code>props<\/code>komponentidele parameetritena, et muuta rekvisiidid komponendis juurdep\u00e4\u00e4setavaks.<\/p>\n<h2>Kokkuv\u00f5te ja l\u00f5pus\u00f5nad<\/h2>\n<p>Loodan, et see \u00f5petus oli teile kasulik. See on see, mida mul \u00f5nnestus sellel teemal paljude katse-eksitusmeetodite k\u00e4igus m\u00f5ista. Selle teema kohta pole veel peaaegu \u00fchtegi dokumentatsiooni. Olen sellega endiselt h\u00e4das, eriti kui tegemist on mitme postituse meta t\u00f5husa k\u00e4sitlemisega. Kui mul \u00f5nnestub m\u00f5nda head nippi \u00f5ppida, v\u00e4rskendan seda \u00f5petust kindlasti!<\/p>\n<p>Loodetavasti peaks teil seda \u00f5petust j\u00e4rgides olema kood, mis lisab edukalt WordPressi Gutenbergi redaktorisse uue kohandatud k\u00fclgriba ning loodetavasti m\u00f5ne sisulise sisu ja seadetega. Siin on postituse metav\u00e4ljaga kohandatud k\u00fclgriba l\u00f5plik kood.<\/p>\n<pre><code>const { registerPlugin } = wp.plugins;\nconst { __ } = wp.i18n;\nconst { Fragment } = wp.element;\nconst { PluginSidebarMoreMenuItem, PluginSidebar } = wp.editPost;\nconst { PanelBody, PanelRow, ToggleControl } = wp.components;\nconst { compose } = wp.compose;\nconst { withDispatch, withSelect } = wp.data;\n\u00a0\nconst CustomSidebarMetaComponent = (props) =&gt; {\n    return(\n        &lt;ToggleControl\n            label={__('My custom post meta', 'awp')}\n            checked={props.customPostMetaValue}\n            onChange={props.setCustomPostMeta}\n        \/&gt;\n    );\n}\n\u00a0\nconst CustomSidebarMeta = compose([\n    withSelect(select =&gt; {\n        return { customPostMetaValue: select('core\/editor').getEditedPostAttribute('meta')['awp_my_custom_meta'] }\n    }),\n    withDispatch(dispatch =&gt; {\n        return { \n            setCustomPostMeta: function(value) {\n                dispatch('core\/editor').editPost({ meta: { awp_my_custom_meta: value } });\n            }\n        }\n    })\n])(CustomSidebarMetaComponent);\n\u00a0\nconst CustomSidebarComponent = () =&gt; {\n    return(\n        &lt;Fragment&gt;\n            &lt;PluginSidebarMoreMenuItem \n                target='awp-custom-sidebar'\n                icon='carrot'\n            &gt;{__('My Custom sidebar', 'awp')}&lt;\/PluginSidebarMoreMenuItem&gt;\n            &lt;PluginSidebar \n                name=\"awp-custom-sidebar\" \n                title={__('My Custom sidebar', 'awp')}\n            &gt;                \n                &lt;PanelBody\n                    title={__('This is a panel section', 'awp')}\n                    initialOpen={true}\n                &gt;\n                    &lt;PanelRow&gt;\n                        &lt;CustomSidebarMeta \/&gt;\n                    &lt;\/PanelRow&gt;\n                &lt;\/PanelBody&gt;\n                &lt;PanelBody\n                    title={__('Another section', 'awp')}\n                    initialOpen={false}\n                &gt;\n                    &lt;PanelRow&gt;\n                        This is a collapsed section by default.\n                    &lt;\/PanelRow&gt;\n                &lt;\/PanelBody&gt;\n            &lt;\/PluginSidebar&gt;\n        &lt;\/Fragment&gt;\n    );\n}\n\u00a0\nregisterPlugin('awp-customsidebar', {\n    render: CustomSidebarComponent,\n    icon: 'carrot'\n});<\/code><\/pre>\n<pre><code>add_action('enqueue_block_editor_assets', function() {\n    wp_enqueue_script('awp-sidebar-plugin', get_stylesheet_directory_uri(). '\/assets\/js\/sidebar-plugin.js', ['wp-plugins', 'wp-edit-post']);\n});\n\u00a0\nadd_action('init', function() {\n    register_meta('post', 'awp_my_custom_meta', [\n        'show_in_rest' =&gt; true,\n        'single' =&gt; true,\n        'type' =&gt; 'boolean'\n    ]);\n});<\/code><\/pre>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00d5petus WordPressi Gutenbergi inspektori kohandatud k\u00fclgriba lisamiseks. Sees rakendame v\u00e4lja, mis on \u00fchendatud postituse metaga.<\/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":[718,894,718,937,937,894,1110,842,812,812,842,863,863],"tags":[1165],"class_list":{"0":"post-233680","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-arendaja","8":"category-kood","10":"category-gutenberg-4","13":"category-n-a","14":"category-opetused","15":"category-pistikprogrammid","18":"category-wordpress-4","20":"tag-affiai-et"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233680","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=233680"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233680\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/223619"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=233680"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=233680"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=233680"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}