{"id":230912,"date":"2022-12-21T12:29:00","date_gmt":"2022-12-21T09:29:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230912"},"modified":"2022-12-07T10:26:40","modified_gmt":"2022-12-07T07:26:40","slug":"wordpressi-taksonoomiad-tingimused-vanemad-lapsed","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-taksonoomiad-tingimused-vanemad-lapsed\/","title":{"rendered":"WordPressi taksonoomiad: tingimused, vanemad, lapsed"},"content":{"rendered":"\n<p>Tundub, et taksonoomiate programmiline loomine on punkt, mis tuleb ikka ja j\u00e4lle esile nende jaoks, kes WordPressis teistele lahendusi loovad.<\/p>\n<p>Taksonoomia ise v\u00f5ib isegi veidi segadust tekitada; Siiski olen avastanud, et tavaliselt aitab kontseptsiooni veidi kinnistada j\u00e4rgmine:<\/p>\n<p>Hierarhilised taksonoomiad on analoogsed kategooriatega; mittehierarhilised taksonoomiad on analoogsed siltidega.<\/p>\n<p>Kuid siiski oletame, et loote kellelegi sellise lahenduse, et peate importima teabe postitusena ja rakendama sellele taksonoomiat. Lisaks v\u00f5ib-olla soovite postitusele rakendada ka vanema taksonoomiat.<\/p>\n<p>Kuidas me saame seda teha?<\/p>\n<h2>WordPressi taksonoomiad: registreerimine, vanemad, lapsed ja palju muud<\/h2>\n<p>Olukord on umbes selline:<\/p>\n<p>Teil on postitus, millele rakendatakse taksonoomiat. Kui taksonoomial on vanem, soovime seda ka ametikohale rakendada.<\/p>\n<p>Selleks vajame nelja (v\u00f5ib-olla viit) funktsiooni:<\/p>\n<ol>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/register_taxonomy\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">register_taksonoomia<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_insert_term\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_insert_term<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/get_term_by\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_term_by<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_set_object_terms\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_set_object_terms<\/a><\/li>\n<\/ol>\n<p>Lisan ka, et minu arvates on hea m\u00f5te kasutada <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/sanitize_title_with_dashes\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sanitize_title_with_dashes<\/a>, kui kavatsete kasutada m\u00f5nda t\u00fc\u00fcpi desinfitseerimata sissetulevat stringi postituse t\u00fc\u00fcbi slugi jaoks (aga see pole muidugi vajalik, kui te seda ei tee ).<\/p>\n<h3>1 Registreerige taksonoomia<\/h3>\n<p>Selle n\u00e4ite jaoks loome kohandatud postituse t\u00fc\u00fcbi jaoks taksonoomia.<\/p>\n<p>Kuna see v\u00f5ib olla \u00fcksk\u00f5ik, millega te t\u00f6\u00f6tate, kasutan <a href=\"https:\/\/gist.github.com\/tommcfarlin\/a1d3464ee4f84864a002f5568586795f#file-00-register-taxonomy-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selle punkti<\/a> demonstreerimiseks muutujat nimega <strong>$postType<\/strong>.<a href=\"https:\/\/gist.github.com\/tommcfarlin\/a1d3464ee4f84864a002f5568586795f#file-00-register-taxonomy-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a><\/p>\n<pre><code>&lt;?php\n\nregister_taxonomy(\n  'acme-category',\n  $postType,\n  [\n      'label' =&gt; 'Acme Categories',\n      'rewrite' =&gt; ['slug' =&gt; 'acme-category'],\n      'capabilities' =&gt; [\n          'manage_terms' =&gt; 'manage_options',\n          'edit_terms' =&gt; 'manage_options',\n          'delete_terms' =&gt; 'manage_options',\n          'assign_terms' =&gt; 'manage_options',\n      ],\n      'hierarchical' =&gt; true,\n  ]\n);<\/code><\/pre>\n<p>See on piisavalt lihtne, kuid pange t\u00e4hele <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_taxonomy\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">koodi viidet<\/a> :<\/p>\n<blockquote>\n<p>Lihtne funktsioon taksonoomiaobjekti loomiseks v\u00f5i muutmiseks etteantud parameetrite alusel. Olemasoleva taksonoomiaobjekti muutmisel pange t\u00e4hele, et <code>$object_type<\/code>algse registreeringu v\u00e4\u00e4rtus kirjutatakse \u00fcle.<\/p>\n<\/blockquote>\n<p>\u00dcldiselt pole see probleem, kuid kui t\u00f6\u00f6tate suure rakendusega v\u00f5i juba olemasoleva rakendusega, siis tasub seda meeles pidada.<\/p>\n<h3>2 Sisestage taksonoomia termin<\/h3>\n<p>J\u00e4rgmiseks oletagem, et <strong>$customPost<\/strong> on teile k\u00e4ttesaadavaks tehtud ja sellel on funktsioon selle nime, pealkirja v\u00f5i m\u00f5ne muu selle tuvastamiseks kasutatava atribuudi (va ID) hankimiseks.<\/p>\n<\/p>\n<p>Selle saab edasi anda funktsiooniks v\u00f5i teha k\u00e4ttesaadavaks muude WordPressi pakutavate funktsioonide kasutamise kaudu. <a href=\"https:\/\/gist.github.com\/tommcfarlin\/a1d3464ee4f84864a002f5568586795f#file-01-wp-insert-term-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Selles n\u00e4ites<\/a> kasutan\u00a0 objektil <strong>$customPost\u00a0<\/strong> funktsiooni <strong>getName()<\/strong>.<\/p>\n<pre><code>&lt;?php\n\n$termInfo = wp_insert_term(\n  $customPost-&gt;getName(),\n  'acme-category',\n  ['slug' =&gt; sanitize_title_with_dashes($customPost-&gt;getName())]\n);<\/code><\/pre>\n<p>Pange t\u00e4hele, et ma loen funktsiooni tulemuse ka\u00a0 muutujasse <strong>$termInfo<\/strong>. Kasutame seda j\u00e4rgmises etapis vanema leidmiseks, kui see on olemas, ja rakendame selle ka oma kohandatud postitusobjektile.<\/p>\n<h3>3 Otsige \u00fcles termini vanem<\/h3>\n<p>Siin kasutame \u00e4sja loodud terminit, et n\u00e4ha, kas selle jaoks on vanem olemas. Pange t\u00e4hele, et kui see tagastab vale, siis taksonoomiat ei eksisteeri (v\u00f5i kui terminit ei leita).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160701-61e7112a99bca.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-160701-61e7112a99bca.png\" alt=\"WordPressi taksonoomiad: tingimused, vanemad, lapsed\" ><\/a><\/p>\n<p>Sel eesm\u00e4rgil soovite vajadusel koodi loomiseks lisada tingimuse. Et kood j\u00e4\u00e4ks kokkuv\u00f5tlikuks, j\u00e4tan <a href=\"https:\/\/gist.github.com\/tommcfarlin\/a1d3464ee4f84864a002f5568586795f#file-02-get-term-by-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selle j\u00e4rgmises koodis<\/a> v\u00e4lja :<\/p>\n<pre><code>&lt;?php\n\n$parentTermInfo = get_term_by(\n  'term_taxonomy_id',\n  $termInfo['term_taxonomy_id'],\n  'acme-category',\n  ARRAY_A\n);<\/code><\/pre>\n<p>M\u00e4rkus. Salvestan \u00fclaltoodud koodi tulemuse\u00a0 muutujasse <strong>$parentTermInfo<\/strong>. See on selleks, et saaksime selle edasi anda oma l\u00f5plikule funktsioonile, mille eesm\u00e4rk on rakendada vanemateavet meie postitusobjektile.<\/p>\n<h3>4 Rakendage postitusele t\u00e4htaeg<\/h3>\n<p>L\u00f5puks rakendame terminit (v\u00f5i termineid), kui on olemas \u00fclemobjekt. Tuletage meelde, et siin on tingimuslikkust vaja. Lihtsamalt \u00f6eldes, kui vanemat pole, pole <strong>$parentTermInfo[&#8216;parent&#8217;]<\/strong> v\u00e4\u00e4rtust vaja.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160701-61e7112e513f4.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-160701-61e7112e513f4.png\" alt=\"WordPressi taksonoomiad: tingimused, vanemad, lapsed\" ><\/a><\/p>\n<p><a href=\"https:\/\/gist.github.com\/tommcfarlin\/a1d3464ee4f84864a002f5568586795f#file-04-wp-set-object-terms-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Kuid alloleva koodi<\/a> puhul eeldame, et meil see on.<\/p>\n<pre><code>&lt;?php\n\nwp_set_object_terms(\n  $customPost-&gt;getId(),\n  [\n      $parentTermInfo['parent'],\n      $termInfo['term_id'],\n  ],\n  'acme-category',\n  true\n);<\/code><\/pre>\n<p>Koodiviite p\u00f5hjal pange t\u00e4hele, et see loob termini, kui seda veel pole; vastasel juhul kasutab see juba m\u00e4\u00e4ratletut ja rakendab selle postitusele.<\/p>\n<h2>Ja Valmis<\/h2>\n<p>\u00dcldiselt ei ole see nii palju t\u00f6\u00f6d. See aitab tagada, et teil on selge arusaam taksonoomiate ja nende m\u00f5istete toimimisest. Lisaks aitab see ka teada, kuidas otsida antud termini vanemat, kui seda teha soovite (muidu pole kolmas samm vajalik).<\/p>\n<p>Kuid loodetavasti pakuvad \u00fclaltoodud lingid ja kood teile k\u00f5ike, mida vajate taksonoomia loomiseks ja selle postitusele rakendamiseks (samuti vajadusel ematermini).<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oletame, et loote lahenduse, mille jaoks peate rakendama sellele taksonoomiat. Lisaks soovite postitusele rakendada ka vanema taksonoomiat.<\/p>\n","protected":false},"author":1,"featured_media":235914,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,833,802,863],"tags":[1165],"class_list":["post-230912","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-juhend-algajatele","category-php-4","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230912","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=230912"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230912\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/235914"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=230912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=230912"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=230912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}