{"id":233879,"date":"2023-02-24T14:12:00","date_gmt":"2023-02-24T11:12:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233879"},"modified":"2022-11-11T12:57:06","modified_gmt":"2022-11-11T09:57:06","slug":"looge-kohandatud-gutenbergi-plokk-3-osa-rekvisiidid-ja-wordpressi-komponendid","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/looge-kohandatud-gutenbergi-plokk-3-osa-rekvisiidid-ja-wordpressi-komponendid\/","title":{"rendered":"Looge kohandatud Gutenbergi plokk \u2013 3. osa: rekvisiidid ja WordPressi komponendid"},"content":{"rendered":"\n<p>Selle \u00f5petuste seeria <a href=\"https:\/\/awhitepixel.com\/blog\/wordpress-gutenberg-create-custom-blocks-part-2-register-block\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">eelmine samm<\/a> l\u00e4bis kohandatud ploki registreerimise nii Javascriptis kui ka PHP-s. Selles etapis \u00f5pime kasutama WordPressi komponente erinevat t\u00fc\u00fcpi v\u00e4ljade ja s\u00e4tete lisamiseks.<\/p>\n<p>WordPressi komponentide kasutamiseks oma plokis peame esmalt teadma rekvisiite.<\/p>\n<h2>Rekvisiidid<\/h2>\n<p>Rekvisiidid on Reacti peamine funktsioon ja see on p\u00f5him\u00f5tteliselt viis muutujate v\u00f5i funktsioonide edastamiseks teistele komponentidele. Kui te ei tunne Reacti rekvisiite, v\u00f5ite lugeda selle kohta <a href=\"https:\/\/reactjs.org\/docs\/components-and-props.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Reacti ametlikku \u00f5petust<\/a>.<\/p>\n<p>WordPress pakub m\u00f5ningaid rekvisiite rakenduse <code>edit<\/code>ja <code>save<\/code>funktsioonide jaoks <code>registerBlockType()<\/code>. Nende rekvisiitide sees saame juurdep\u00e4\u00e4su kriitilistele asjadele, nagu atribuudid ja meetod oma atribuutide v\u00e4rskendamiseks. <a href=\"https:\/\/awhitepixel.com\/blog\/how-to-create-custom-gutenberg-blocks-part-4-attributes\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">J\u00e4rgmises etapis<\/a> k\u00e4sitleme atribuute \u00fcksikasjalikult !<\/p>\n<p>Siiani oleme oma plokis kirjutanud funktsiooni jaoks <code>edit<\/code>ja <code>save<\/code>nii:<\/p>\n<pre><code>edit:() =&gt; { \n    return &lt;div&gt;:)&lt;\/div&gt; \n},<\/code><\/pre>\n<p>Peaksite harjuma parameetri <code>props<\/code>lisamisega m\u00f5lemale <code>edit<\/code>ja <code>save<\/code>, n\u00e4iteks:<\/p>\n<pre><code>edit: (props) =&gt; { \n    return &lt;div&gt;:)&lt;\/div&gt; \n},<\/code><\/pre>\n<p>N\u00fc\u00fcd on teil t\u00e4ielik juurdep\u00e4\u00e4s muutujale <code>props<\/code>ja k\u00f5igele, mida see sisaldab, seest <code>edit<\/code>ja <code>save<\/code>. Kui olete uudishimulik, saate lause <code>console.log(props);<\/code>ette lisada <code>edit<\/code>funktsiooni <code>return<\/code>. Peaksite n\u00e4gema, millised rekvisiidid on konsooli siluris saadaval.<\/p>\n<h2>WordPressi komponentide kasutamine<\/h2>\n<p>Nagu varem mainitud, on meil globaalses paketis juurdep\u00e4\u00e4s tohutule komponentide ja kasulike funktsioonide raamatukogule <code>wp<\/code>. Leiate kasutusvalmis komponente mis tahes t\u00fc\u00fcpi sisendiga seotud komponentide jaoks. N\u00e4ited h\u00f5lmavad tekstisisestusi, rikasteksti sisestusi, rippmen\u00fc\u00fcd, l\u00fclitit, m\u00e4rkeruudud, erineva stiiliga nupud, meedia \u00fcleslaadija ja v\u00e4rvivalijad. T\u00e4iustatud funktsionaalsuse jaoks on ka funktsioone ja komponente. N\u00e4iteks WordPressist sisu (postitused, kategooriad jne) p\u00e4ringute esitamine sisseehitatud funktsioonidega v\u00f5i toomine REST API-ga.<\/p>\n<p>Lihtsam ja soovitatav on kasutada WordPressi kasutajaliidese komponente. Selle eesm\u00e4rk on tagada, et disain ja funktsionaalsus oleksid v\u00f5imalikult sujuvad, et kasutajaid mitte segadusse ajada ega h\u00e4irida.<\/p>\n<p>Kuid kahjuks on selle kirjutamise ajal Gutenbergi dokumentatsioon v\u00e4ga napp. Leidsin parima v\u00f5imaluse saada teavet selle kohta, mis <code>wp<\/code>paketi sees on ja kuidas komponendid tegelikult t\u00f6\u00f6tavad, vaadates nende ametlikku <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/tree\/master\/packages\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Gutenbergi Githubi repot<\/a>. M\u00f5nel paketil (kaustadel) on lugemiseks tekst, mis pakub natuke dokumentatsiooni. Vaadake n\u00e4iteks <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/tree\/master\/packages\/components\/src\/button\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nuppu<\/a> Readme v\u00f5i <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/tree\/master\/packages\/components\/src\/toggle-control\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">l\u00fclitit<\/a>.<\/p>\n<p>Githubi repo peaks vastama <code>wp<\/code>paketi sees olevale (olenevalt sellest, milline versioon teil on ja millist haru Githubis vaatate). See t\u00e4hendab, et iga kaust, mida n\u00e4ete <code>packages<\/code>Githubi juurkataloogis, asub globaalses <code>wp<\/code>paketis. N\u00e4iteks pidage meeles, et eelmises etapis kasutatud funktsioon <code>registerBlockType()<\/code>, oli sees <code>wp.blocks<\/code>, mis t\u00e4hendab, et leiate selle funktsiooni l\u00e4htekoodi, mis on eksporditud <code>packages\/blocks\/<\/code>.<\/p>\n<p>Kuna olen v\u00e4lja t\u00f6\u00f6tanud mitmeid kohandatud Gutenbergi plokke ja uurinud \u00fcsna palju Githubi repost, avastasin, et on m\u00f5ned paketid, mis sisaldavad k\u00f5ige tavalisemaid kohandatud plokkide loomiseks kasutatavaid funktsioone. Lisan need allpool.<\/p>\n<p>Saadaolevatest komponentidest t\u00e4ielikuma \u00fclevaate saamiseks soovitan alla laadida minu tasuta e-raamatu, mis h\u00f5lmab Gutenbergis saadaolevaid komponente! See sisaldab k\u00f5ige levinumaid ja kasulikke komponente koos rekvisiitide ja koodin\u00e4idetega:<\/p>\n<h3>Kiire \u00fclevaade enamlevinud pakettidest, mida plokkide jaoks kasutate<\/h3>\n<p>Ilmselgelt on saadaval palju rohkem, kuid allpool on plokkide arendamiseks k\u00f5ige tavalisem. Selles \u00f5petusesarjas kasutame enamikku neist, kui mitte k\u00f5iki. Kui soovite m\u00f5nda komponenti kasutada, peate teadma, millises pakendis see on.<\/p>\n<h4>wp.components<\/h4>\n<p>Enamiku kasutajaliidese sisendkomponentidest leiate <code>wp.components<\/code>. N\u00e4iteks erinevad tekstisisestused, valikud, m\u00e4rkeruudud, raadionupud, lohistatavad komponendid, nupud, v\u00e4rvivalija, kuup\u00e4evavalija jne. Samuti leiate kasutajaliidese komponendid, mida saate kasutada plokkide t\u00f6\u00f6riistariba ja seadete k\u00fclgriba sisu jaoks (nn InspectorControls).<\/p>\n<p>Vaadake <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/tree\/master\/packages\/components\/src\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Githubi repos<\/a> olevaid kaustu .<\/p>\n<h4>wp.blockEditor ja wp.editor<\/h4>\n<p>Nendest kahest paketist leiate kasulikke komponente rikasteksti jaoks, piltide\/meediumi\u00fcleslaadija haldamiseks ning t\u00f6\u00f6riistaribade v\u00f5i kohandatud inspektori (k\u00fclgriba) paneelide lisamiseks.<\/p>\n<p>Selle seeria l\u00f5pus vaatleme d\u00fcnaamiliste plokkide ehitamist, milles kasutame ploki v\u00e4ljundi renderdamiseks PHP-d ja selleks kasutame komponenti <code>wp.editor<\/code>.<\/p>\n<p>Nagu ma aru saan, algas enamik komponente <code>wp.editor<\/code>juba Gutenbergi p\u00e4evil, kuid eriti p\u00e4rast WordPress 5.3 viidi paljud neist \u00fcle <code>wp.blockEditor<\/code>. Kui kasutate komponenti, <code>wp.editor<\/code>millesse WordPress kavatseb sellesse kolida, <code>wp.blockEditor<\/code>ei kuku see praegu l\u00e4bi, kuid konsooli siluris saate hoiatusi, et see on aegunud ja peaksite v\u00f5imaluse <code>wp.blockEditor<\/code>korral sellele \u00fcle minema. Ja p\u00f6\u00f6rduvalt, kui j\u00e4lgite seda seeriat vanema WordPressi versiooniga, v\u00f5ite mingil p\u00f5hjusel ilmneda t\u00f5rkeid komponentide helistamisel, mida pole <code>wp.blockEditor<\/code>veel teisaldatud.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151760-61e4cf23c1355.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-151760-61e4cf23c1355.png\" alt=\"Looge kohandatud Gutenbergi plokk \u2013 3. osa: rekvisiidid ja WordPressi komponendid\" ><\/a><\/p>\n<h4>wp.element<\/h4>\n<p>Seest <code>wp.element<\/code>leiate komponendid, mis vastavad Reacti komponentidele. N\u00e4iteks <code>Component<\/code>(mis vastab <code>React.Component<\/code>) ja <code>Fragment<\/code>( <code>React.Fragment<\/code>). Kasutame neid siis, kui hakkame koodi jagama eraldi komponentideks.<\/p>\n<h4>wp.i18n<\/h4>\n<p>Nagu nimigi \u00fctleb, <code>wp.i18n<\/code>sisaldab pakett t\u00f5lke haldamise funktsioone. See sisaldab samu t\u00f5lkefunktsioone, mida me teame PHP-s; n\u00e4iteks <code>__()<\/code>ja <code>_e()<\/code>. Vaatleme seda \u00fcksikasjalikult jaotises &lt;&lt;&lt;&gt;&gt;&gt;&gt;, kui saame teada, kuidas oma plokki t\u00f5lkida.<\/p>\n<h4>wp.data<\/h4>\n<p>Pakett <code>wp.data<\/code>on m\u00f5eldud WordPressist andmete p\u00e4rimiseks v\u00e4ljaspool redaktorit. S\u00f5numite saatmiseks on olemas komponendid, <code>withSelect<\/code>mida <code>select<\/code>kasutame selles seerias hiljem meie blokis olevate postituste p\u00e4ringute tegemiseks.<\/p>\n<h4>wp.compose<\/h4>\n<p>Eelmine pakett ja <code>wp.compose<\/code>on t\u00e4iustatud plokkide ehitamiseks. Selle paketi seest leiame komponendid ja funktsioonid nn k\u00f5rgema j\u00e4rgu komponentide loomiseks. <a href=\"https:\/\/reactjs.org\/docs\/higher-order-components.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">K\u00f5rgema j\u00e4rgu komponendid<\/a> on Reacti mustritehnika komponentide ja loogika taaskasutamiseks ning me kasutame seda koos komponendiga <code>wp.data<\/code>postituste p\u00e4ringute tegemiseks.<\/p>\n<h2>Piisavalt juttu \u2013 kuidas te m\u00f5nda neist komponentidest praktikas kasutate?<\/h2>\n<p>Nagu varem mainitud; WordPressi komponentide kasutamiseks peate teadma, kus need asuvad. Loodetavasti annab minu \u00fclaltoodud \u00fclevaade koos <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/tree\/master\/packages\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Githubi repoga<\/a> teile aimu, kust neid hankida.<\/p>\n<p>\u00c4rge unustage, et saate alati lisada tavalisi HTML-m\u00e4rgendeid, nagu div, span, pealkirjad jne. \u00c4rge unustage j\u00e4rgida atribuutide osas <a href=\"https:\/\/reactjs.org\/docs\/dom-elements.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Reacti juhiseid .<\/a> N\u00e4iteks <code>class<\/code>on Reactis reserveeritud m\u00e4rks\u00f5na (klassip\u00f5histe komponentide loomiseks), nii et kui soovite HTML-elemendile klassi lisada, peate kasutama <code>className<\/code>.<\/p>\n<p>M\u00e4rkus. Arendades \u00e4rge unustage <code>npm run start<\/code>koodi kompileerimist alustada.<\/p>\n<p>Lihtsa n\u00e4itena proovime m\u00f5nda komponenti, et n\u00e4ha, kuidas need v\u00e4lja n\u00e4evad. Destruktureerime need vastavatest pakettidest ja kasutame neid oma <code>edit<\/code>funktsioonis.<\/p>\n<pre><code>const { registerBlockType } = wp.blocks;\nconst { RichText } = wp.blockEditor;\nconst { TextControl, TextareaControl } = wp.components;\n\u00a0\nregisterBlockType('awp\/firstblock', {\n    ...\n    edit: (props) =&gt; { \n        return (&lt;div&gt;\n                Text input:\n                &lt;TextControl \/&gt; \n                Textarea:\n                &lt;TextareaControl \/&gt;\n                Richtext:\n                &lt;RichText \/&gt;\n            &lt;\/div&gt;\n        );\n    },\n    ...\n});<\/code><\/pre>\n<p>Selle tulemuseks on n\u00e4iteks see, et meie plokk n\u00e4eb redaktoris v\u00e4lja selline.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151760-61e4cf248ce0b.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-151760-61e4cf248ce0b.png\" alt=\"Looge kohandatud Gutenbergi plokk \u2013 3. osa: rekvisiidid ja WordPressi komponendid\" ><\/a><\/p>\n<p>M\u00e4rkate, et konsoolis kuvatakse nende sisestamisel veateateid ja see ei salvesta postituse v\u00e4rskendamisel (ja v\u00e4rskendamisel) sisestatavat teksti. Selle p\u00f5hjuseks on asjaolu, et meil puuduvad komponentide rekvisiidid, mis on \u00fchendus atribuutidega, kuhu salvestatakse k\u00f5ik meie plokkide andmed. Rekvisiidid vastutavad salvestatud v\u00e4\u00e4rtuste edastamise ja funktsioonide eest, mis vastutavad meie atribuutide v\u00e4rskendamise eest, kui meie sisendites midagi muudetakse. Seda teeme j\u00e4rgmises etapis, kus hakkame l\u00f5puks p\u00e4riselt koodi kirjutama.<\/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>Eelmises etapis registreerisime kohandatud Gutenbergi ploki. Selles etapis \u00f5pime kasutama WordPressi komponente erinevate seadete lisamiseks.<\/p>\n","protected":false},"author":1,"featured_media":151761,"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":["post-233879","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-gutenberg-4","category-n-a","category-opetused","category-pistikprogrammid","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233879","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=233879"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233879\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/151761"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=233879"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=233879"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=233879"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}