{"id":233817,"date":"2023-02-23T13:27:00","date_gmt":"2023-02-23T10:27:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233817"},"modified":"2022-11-11T12:35:58","modified_gmt":"2022-11-11T09:35:58","slug":"loo-kohandatud-gutenbergi-plokk-2-osa-registreerimisplokk","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/loo-kohandatud-gutenbergi-plokk-2-osa-registreerimisplokk\/","title":{"rendered":"Loo kohandatud Gutenbergi plokk \u2013 2. osa: registreerimisplokk"},"content":{"rendered":"\n<p>Selles osas kirjutame oma kohandatud ploki registreerimiseks ja konfigureerimiseks Javascripti. L\u00f5pus registreerime skripti PHP-ga ja teeme vajaliku PHP koodi, et WordPress tuvastaks selle uue plokina.<\/p>\n<p>K\u00f5igepealt kiire m\u00e4rkus WordPressi Gutenbergi funktsioonidele ja komponentidele juurdep\u00e4\u00e4su kohta.<\/p>\n<h2>\u00dclemaailmne <code>wp<\/code>pakett ja destruktureerimine<\/h2>\n<p>Kui oleme Gutenbergi redaktoris j\u00e4rjekorda pandud Javascripti failis, on meil juurdep\u00e4\u00e4s globaalsele objektile\/paketile: <code>wp<\/code>. See on v\u00e4ga mitmekesine Javascripti objekt ja see sisaldab tervet hulka kasulikke komponente ja funktsioone, mida kasutame plokkide loomiseks. Kohandatud plokkide jaoks Javascripti kirjutamisel viitate <code>wp<\/code>\u00fcsna paljule.<\/p>\n<p>Seet\u00f5ttu on nii kaasaegses Javascriptis kui ka Reactis tavaline h\u00e4vitada see, mida me sellest kasutada tahame. P\u00f5him\u00f5tteliselt t\u00e4hendab see lihtsalt seda, et me m\u00e4\u00e4ratleme kohalikud muutujad suurema struktuuri osadest. N\u00e4iteks esimene funktsioon, mida me kasutame, on <code>registerBlockType()<\/code>see, mis eksisteerib <code>wp.blocks<\/code>. V\u00f5iksime funktsiooni kutsuda j\u00e4rgmiselt:<\/p>\n<pre><code>wp.blocks.registerBlockType();<\/code><\/pre>\n<p>Kuid seda on lihtsam h\u00e4vitada j\u00e4rgmiselt:<\/p>\n<pre><code>const { registerBlockType } = wp.blocks;\nregisterBlockType();<\/code><\/pre>\n<p>N\u00fc\u00fcd saate funktsioonile otse viidata, ilma selle struktuuri ette lisamata. See muutub palju kasulikumaks, kui viitame funktsioonidele v\u00f5i komponentidele, mida me sageli kordame.<\/p>\n<p>Teeme selles sarjas \u00fcmberstruktureerimise ja \u00f5petuses edasi liikudes n\u00e4eme, kui palju loetavamaks ja l\u00fchemaks muutub meie kood.<\/p>\n<h2>Uue ploki registreerimine<\/h2>\n<p>Uue kohandatud ploki registreerimise funktsioon on paketis <code>registerBlockType()<\/code>saadaval. <code>wp.blocks<\/code>See aktsepteerib kahte parameetrit; esiteks string ploki nimeruumi ja nimega ning teiseks kogu ploki konfiguratsiooniga objekt.<\/p>\n<p>Gutenberg eeldab, et k\u00f5igil plokkidel on nimeruum ja nimi, mille vahel on kaldkriips. Nimeruumi eesm\u00e4rk on tagada, et teie ploki nimi ei oleks vastuolus teiste sama nime kasutavate plokkidega. K\u00f5ik WordPressi plokid kasutavad nimeruumi <code>core<\/code>. N\u00e4iteks WordPressi standardse l\u00f5iguploki nimi on <code>core\/paragraph<\/code>. Kui valite m\u00f5ne muu nimeruumi, saate probleeme tekitamata luua ka ploki nimega l\u00f5ik.<\/p>\n<p>Otsustage slug-versiooni nimeruum, mis on teie jaoks ainulaadne. Kasutan <code>awp<\/code>selles seerias nimeruumi (A White Pixeli l\u00fchiversioon).<\/p>\n<p>Avage viimases etapis loodud l\u00e4htefail; <code>src\/block-awhitepixel-myfirstblock.js<\/code>, toimetajas. Esmalt helistame nimega <code>registerBlockType<\/code>destructured. Kohandage oma nime ja nimeruumi.<code>wp.blocks``awp\/firstblock<\/code><\/p>\n<pre><code>const { registerBlockType } = wp.blocks;\n\u00a0\nregisterBlockType('awp\/firstblock', {\n    \/\/ Your block configuration and code here\n});<\/code><\/pre>\n<p>Teises parameetris, ploki konfiguratsiooniobjektis, peame selle edukaks registreerimiseks m\u00e4\u00e4ratlema m\u00f5ned omadused. Pidage meeles, et ploki konfiguratsioon on objekt, mis t\u00e4hendab, et peate k\u00f5ik kirjutama v\u00f5tme + v\u00e4\u00e4rtuse paaridena, eraldades need komadega. V\u00f5imalikke konfiguratsiooniatribuute on \u00fcsna palju, nii et vaatame need l\u00e4bi ja n\u00e4eme l\u00f5pus l\u00f5plikku koodi.<\/p>\n<h3>N\u00f5utav: pealkiri<\/h3>\n<p>Esimene n\u00f5utav vara on <code>title<\/code>. See on nimi, nagu see kuvatakse, kui valite plokkide vahel. M\u00e4\u00e4rake see atribuut stringis soovitud nimeks.<\/p>\n<p>Lisame pealkirjaks j\u00e4rgmise:<\/p>\n<pre><code>title: 'My first block',<\/code><\/pre>\n<p>PS: Vaatame uuesti, kuidas me oma plokki k\u00f5ik stringid kirjutame, et tagada nende t\u00f5lkimine 8. osas. Kuid praegu hoiame selle lihtsana ja kirjutame lihtsalt stringe.<\/p>\n<h3>N\u00f5utav: kategooria<\/h3>\n<p>Atribuut <code>category<\/code>m\u00e4\u00e4rab, kus millises plokikategoorias teie plokk kuvatakse, kui valite redaktoris plokid sisestamiseks. V\u00f5imalikud v\u00e4\u00e4rtused on <code>common<\/code>, <code>formatting<\/code>, <code>layout<\/code>, <code>widgets<\/code>, <code>embed<\/code>.<\/p>\n<p>Paneme <code>common<\/code>selle esimesse ploki kategooriasse.<\/p>\n<pre><code>category: 'common',<\/code><\/pre>\n<h3>Valikuline: ikoon<\/h3>\n<p>Kui olete Gutenbergi kasutanud, olete ilmselt m\u00e4rganud, et k\u00f5igil plokkidel on ikoonid. Saate lisada oma plokile ikooni kas stringiga, mis viitab mis tahes <a href=\"https:\/\/developer.wordpress.org\/resource\/dashicons\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPressi Dashiconile<\/a>, v\u00f5i pakkuda kohandatud <code>svg<\/code>elemendi.<\/p>\n<p>Ma valin lihtsalt \u00fche WordPressi armatuurlaua, <a href=\"https:\/\/developer.wordpress.org\/resource\/dashicons\/#smiley\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">emotikoni<\/a> \u2013 aga saate valida \u00fcksk\u00f5ik millise, mida soovite. Pange t\u00e4hele, et j\u00e4tate oma ikooni klassinimesse &quot;dashicons-&quot; lisamata.<\/p>\n<pre><code>icon: 'smiley',<\/code><\/pre>\n<h3>Valikuline: kirjeldus<\/h3>\n<p>Saate esitada kirjelduse, mis kuvatakse seadete k\u00fclgribal (paremal pool), kui plokk on aktiivne.<\/p>\n<p>Lisan n\u00e4itena kiire teksti:<\/p>\n<pre><code>description: 'Learning in progress',<\/code><\/pre>\n<h3>Valikuline: m\u00e4rks\u00f5nad<\/h3>\n<p>Gutenberg toetab plokit\u00fc\u00fcpide valimisel otsingufunktsiooni. Saate pakkuda hulga v\u00f5imalikke vasteid kinnisvaras <code>keywords<\/code>. Ilma selleta <code>keywords<\/code>leiaksite oma ploki ainult selle nime otsides.<\/p>\n<p>Lisan <code>example<\/code>ja <code>test<\/code>, et saaksime h\u00f5lpsasti leida oma kohandatud ploki, kui hakkame \u00fchte neist m\u00e4rks\u00f5nadest sisestama.<\/p>\n<pre><code>keywords: ['example', 'test'],<\/code><\/pre>\n<h3>Valikuline: atribuudid<\/h3>\n<p>Atribuut <code>attributes<\/code>on v\u00e4ga oluline omadus, mida me selles \u00f5petusesarjas \u00fcsna sageli uuesti k\u00e4sitleme. See on koht, kus salvestate oma ploki struktureeritud andmed ja kasutajateabe. V\u00f5ite seda kujutleda muutujatena. Me ei lisa seda praegu, kuid tuleme selle juurde kindlasti varsti tagasi.<\/p>\n<h3>(Kind of) n\u00f5utav: redigeeri ja valikuline: salvesta<\/h3>\n<p>Atribuudid <code>edit<\/code>on <code>save<\/code>tegelikult koht, kus saate lisada kogu koodi nii redaktori v\u00e4ljundi kui ka esiserva renderdamise jaoks. M\u00f5lemad omadused eeldavad funktsiooni, mis peaks tagastama teatud v\u00e4ljundi.<\/p>\n<p>Atribuut <code>edit<\/code>kirjeldab teie ploki struktuuri redaktoris. Kinnistu <code>save<\/code>tegeleb p\u00f5him\u00f5tteliselt kahe asjaga; teie ploki v\u00e4ljund kasutajaliideses, aga ka teie ploki andmebaasi salvestamise struktuur. Peamiselt t\u00f6\u00f6tate, <code>edit<\/code>kuna siin lisate sisendeid asjade sisestamiseks v\u00f5i valimiseks ning ploki andmete v\u00e4rskendamiseks. Funktsioon <code>save<\/code>ei tohiks andmeid mingil viisil v\u00e4rskendada ega redigeerida, see peaks lihtsalt v\u00e4ljastama.<\/p>\n<p>Gutenberg peab suutma teie ploki koos k\u00f5igi selle s\u00e4tetega redaktoris uuesti konstrueerida selle p\u00f5hjal, mis <code>save<\/code>funktsioonis (ja atribuutides) v\u00e4ljastatakse. Kui Gutenberg avab kunagi postituse, kus eelnevalt salvestatud ploki v\u00e4ljund erineb (kasv\u00f5i veidi) salvestamisel m\u00e4\u00e4ratletust, muutub teie plokk kehtetuks.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151978-61e4d21609214.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-151978-61e4d21609214.png\" alt=\"Loo kohandatud Gutenbergi plokk \u2013 2. osa: registreerimisplokk\" ><\/a><\/p>\n<p>V\u00f5in teile garanteerida, et kohandatud plokkide v\u00e4ljat\u00f6\u00f6tamisel puutute sellega palju kokku. Kui see juhtub, peate ploki eemaldama (t\u00f6\u00f6riistariba punktidest) ja uuesti lisama. Soovitan teha ka brauseri v\u00e4rskendamist (F5 v\u00f5i CTRL+R).<\/p>\n<p>WordPressil on spetsiaalne <a href=\"https:\/\/developer.wordpress.org\/block-editor\/developers\/block-api\/block-edit-save\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentatsioonileht<\/a> ploki redigeerimis- ja salvestamisfunktsioonide jaoks, kui soovite lisateavet.<\/p>\n<p>Mis puutub meie esimesse plokki, siis v\u00e4ljastame midagi p\u00f5hilist. Tagastame sama m\u00f5lema <code>edit<\/code>ja <code>save<\/code>; &quot;:)&quot;, mis on m\u00e4hitud <code>&lt;div&gt;<\/code>. L\u00f5ppkokkuv\u00f5ttes on ploki ikoon naeratus.<\/p>\n<pre><code>edit:() =&gt; { \n    return &lt;div&gt;:)&lt;\/div&gt; \n},\nsave:() =&gt; { \n    return &lt;div&gt;:)&lt;\/div&gt; \n}<\/code><\/pre>\n<h3>Muud omadused<\/h3>\n<p>; jaoks on valikulisemad atribuudid <code>registerBlockType<\/code>; <code>parent<\/code>, <code>supports<\/code>, <code>transforms<\/code>, <code>example<\/code>ja <code>styles<\/code>. J\u00e4tame need praegu vahele, kuna enamik on m\u00f5eldud t\u00e4iustatud v\u00f5i kohandatud plokkide ehitamiseks. Kui olete huvitatud nende kohta lisateabe lugemisest, vaadake <a href=\"https:\/\/developer.wordpress.org\/block-editor\/developers\/block-api\/block-registration\/#block-configuration\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPressi dokumentatsiooni<\/a>.<\/p>\n<h2>L\u00f5pliku registri ploki kood<\/h2>\n<p>Meie kood n\u00e4eb n\u00fc\u00fcd v\u00e4lja umbes selline.<\/p>\n<pre><code>const { registerBlockType } = wp.blocks;\n\u00a0\nregisterBlockType('awp\/firstblock', {\n    title: 'My first block',\n    category: 'common',\n    icon: 'smiley',\n    description: 'Learning in progress',\n    keywords: ['example', 'test'],\n    edit: () =&gt; { \n        return &lt;div&gt;:)&lt;\/div&gt; \n    },\n    save: () =&gt; { \n        return &lt;div&gt;:)&lt;\/div&gt; \n    }\n});<\/code><\/pre>\n<p>Sellega on meil piisavalt, et meie blokk oleks edukalt registreeritud kohandatud plokina. Vaatame seda praktikas Gutenbergi toimetaja sees.<\/p>\n<p>Kas m\u00e4letasite Javascripti koostamist? Eelmises etapis saime teada, et me ei saa seda Javascripti faili Gutenbergi laadida; vajame kompileeritud versiooni. Tavaliselt arenete <code>npm run start<\/code>taustal jooksmisega v\u00f5i v\u00f5ite <code>npm run build<\/code>n\u00fc\u00fcd korra joosta. See peaks koostama meie l\u00e4htekoodi Javascripti ja asetama selle igale poole, kuhu m\u00e4\u00e4rasite selle paigutamiseks ja nime kandmiseks teie <code>webpack.config.js<\/code>.<\/p>\n<h2>PHP osa ploki registreerimisest<\/h2>\n<p>Iga ploki jaoks peate registreerima Javascripti faili ja see on t\u00e4pselt sama, mis WordPressis muude skriptide registreerimisel \u2013 kasutades <code>[wp_register_script](https:\/\/developer.wordpress.org\/reference\/functions\/wp_register_script\/)()<\/code>. Pange t\u00e4hele, et me registreerime skripti, mitte ei pane seda j\u00e4rjekorda. Seda seet\u00f5ttu, et iga kohandatud ploki registreerimiseks peame kutsuma ka PHP funktsiooni ja see funktsioon vastutab skripti vajaduse korral j\u00e4rjekorda seadmise eest.<\/p>\n<p>Eelistan hoida Gutenbergiga seotud koodi oma teemades eraldi failis. <code>functions.php<\/code>Kuid te saate ja me selles \u00f5petuses kirjutame lihtsalt kogu PHP-koodi lihtsuse huvides otse teemasse .<\/p>\n<p>Soovitan kasutada <code>init<\/code>konksu oma funktsiooni jaoks, mitte <code>enqueue_block_assets<\/code>. Saame kokku panna nii skripti registreerimise kui ka ploki registreerimise.<\/p>\n<pre><code>add_action('init', function() {\n    wp_register_script('awp-myfirstblock-js', get_template_directory_uri(). '\/assets\/js\/gutenberg\/block-awhitepixel-myfirstblock.js');\n\u00a0\n    register_block_type('awp\/firstblock', [\n        'editor_script' =&gt; 'awp-myfirstblock-js',\n    ]);\n});<\/code><\/pre>\n<p>PHP-funktsioon, mida me uue ploki registreerimiseks kasutame, on <code>[register_block_type](https:\/\/developer.wordpress.org\/reference\/functions\/register_block_type\/)()<\/code>. Sarnaselt Javascriptiga <code>registerBlockType()<\/code>aktsepteerib see kahte parameetrit; ploki nimeruum ja nimi ning argumentidega massiiv. Veenduge, et sisestaksite PHP-s t\u00e4pselt sama nimeruumi ja nime, mis Javascriptis.<\/p>\n<p>Teises argumendis on m\u00f5ned v\u00f5imalikud argumendid (m\u00f5nede juurde tuleme selles seerias hiljem tagasi). Kuid k\u00f5ige olulisem on see <code>editor_script<\/code>, kus annate <code>wp_register_script()<\/code>registreeritud skripti k\u00e4epideme (esimene parameeter).<\/p>\n<p>Ja see ongi k\u00f5ik!<\/p>\n<h2>Meie plokk Gutenbergi toimetajas<\/h2>\n<p>N\u00fc\u00fcd, kui v\u00e4rskendate m\u00f5nes postituses oma redaktorit, peaksite leidma meie ploki \u2013 kas avades \u00fchise kategooria v\u00f5i otsides m\u00f5nda teie sisestatud m\u00e4rks\u00f5na v\u00f5i nime.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151978-61e4d216d1cdb.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-151978-61e4d216d1cdb.png\" alt=\"Loo kohandatud Gutenbergi plokk \u2013 2. osa: registreerimisplokk\" ><\/a><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151978-61e4d217e1762.gif\" 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-151978-61e4d217e1762.gif\" alt=\"Loo kohandatud Gutenbergi plokk \u2013 2. osa: registreerimisplokk\" ><\/a><\/p>\n<p>Meie plokk renderdab lihtsa &quot;:)&quot; nii redaktoris kui ka kasutajaliideses. Praeguse seisuga ei saa te plokis midagi muuta, kuid seda \u00f5pime j\u00e4rgmistes etappides!<\/p>\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>Selles \u00f5ppetunnis kirjutame oma kohandatud ploki registreerimiseks Javascripti. L\u00f5pus registreerime skripti ja sisestame vajaliku PHP koodi.<\/p>\n","protected":false},"author":1,"featured_media":151979,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[894,937,937,894,1110,842,812,812,842,863,863],"tags":[1165],"class_list":{"0":"post-233817","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-kood","8":"category-gutenberg-4","11":"category-n-a","12":"category-opetused","13":"category-pistikprogrammid","16":"category-wordpress-4","18":"tag-affiai-et"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233817","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=233817"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233817\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/151979"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=233817"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=233817"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=233817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}