{"id":230863,"date":"2022-12-21T12:34:00","date_gmt":"2022-12-21T09:34:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230863"},"modified":"2022-12-07T10:26:53","modified_gmt":"2022-12-07T07:26:53","slug":"wordpress-taxonomier-villkor-foeraeldrar-barn","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/wordpress-taxonomier-villkor-foeraeldrar-barn\/","title":{"rendered":"WordPress-taxonomier: Villkor, F\u00f6r\u00e4ldrar, Barn"},"content":{"rendered":"\n<p>Att programmera taxonomier verkar vara en punkt som dyker upp d\u00e5 och d\u00e5 f\u00f6r de som bygger l\u00f6sningar f\u00f6r andra p\u00e5 WordPress.<\/p>\n<p>Taxonomier i sig kan till och med vara lite f\u00f6rvirrande; Men jag har m\u00e4rkt att f\u00f6ljande brukar hj\u00e4lpa till att f\u00f6rst\u00e4rka konceptet lite:<\/p>\n<p>Hierarkiska taxonomier \u00e4r analoga med kategorier; icke-hierarkiska taxonomier \u00e4r analoga med taggar.<\/p>\n<p>Men l\u00e5t oss \u00e4nd\u00e5 s\u00e4ga att du skapar en l\u00f6sning f\u00f6r n\u00e5gon s\u00e5 att du beh\u00f6ver importera information som ett inl\u00e4gg och till\u00e4mpa en taxonomi p\u00e5 det. Vidare kanske du ocks\u00e5 vill till\u00e4mpa en \u00f6verordnad taxonomi p\u00e5 inl\u00e4gget.<\/p>\n<p>Hur kan vi g\u00f6ra det?<\/p>\n<h2>WordPress-taxonomier: registrering, f\u00f6r\u00e4ldrar, barn och mer<\/h2>\n<p>Situationen \u00e4r ungef\u00e4r s\u00e5 h\u00e4r:<\/p>\n<p>Du har ett inl\u00e4gg som en taxonomi kommer att till\u00e4mpas p\u00e5. Om taxonomin har en f\u00f6r\u00e4lder vill vi \u00e4ven till\u00e4mpa den p\u00e5 posten.<\/p>\n<p>F\u00f6r att g\u00f6ra detta beh\u00f6ver vi fyra (kanske fem) funktioner:<\/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_taxonomi<\/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>Jag ska ocks\u00e5 till\u00e4gga att jag tycker att det \u00e4r en bra id\u00e9 att anv\u00e4nda <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> om du ska anv\u00e4nda n\u00e5gon typ av osanifierad, inkommande str\u00e4ng f\u00f6r inl\u00e4ggstypen (men det \u00e4r inte n\u00f6dv\u00e4ndigt om du inte g\u00f6r det, naturligtvis ).<\/p>\n<h3>1 Registrera taxonomin<\/h3>\n<p>F\u00f6r det h\u00e4r exemplet kommer vi att skapa en taxonomi f\u00f6r en anpassad inl\u00e4ggstyp.<\/p>\n<p>Eftersom detta kan vara vad som helst som du arbetar med, kommer jag att anv\u00e4nda en variabel som heter <strong>$postType<\/strong> f\u00f6r att visa <a href=\"https:\/\/gist.github.com\/tommcfarlin\/a1d3464ee4f84864a002f5568586795f#file-00-register-taxonomy-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">po\u00e4ngen<\/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>Det \u00e4r okomplicerat nog, men ta en anteckning fr\u00e5n <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_taxonomy\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kodreferensen<\/a> :<\/p>\n<blockquote>\n<p>En enkel funktion f\u00f6r att skapa eller modifiera ett taxonomiobjekt baserat p\u00e5 de angivna parametrarna. Om du \u00e4ndrar ett befintligt taxonomiobjekt, notera att <code>$object_type<\/code>v\u00e4rdet fr\u00e5n den ursprungliga registreringen kommer att skrivas \u00f6ver.<\/p>\n<\/blockquote>\n<p>I allm\u00e4nhet \u00e4r detta inget problem, men om du arbetar med en stor applikation eller en redan existerande applikation \u00e4r det n\u00e5got att t\u00e4nka p\u00e5.<\/p>\n<h3>2 Infoga en term f\u00f6r taxonomin<\/h3>\n<p>Antag sedan att en <strong>$customPost<\/strong> g\u00f6rs tillg\u00e4nglig f\u00f6r dig och den har en funktion f\u00f6r att h\u00e4mta dess namn, dess titel eller n\u00e5gon annan egenskap som anv\u00e4nds f\u00f6r att identifiera den (annat \u00e4n dess ID).<\/p>\n<\/p>\n<p>Detta kan \u00f6verf\u00f6ras till en funktion, eller s\u00e5 kan det g\u00f6ras tillg\u00e4ngligt genom valfri anv\u00e4ndning av andra funktioner som WordPress tillhandah\u00e5ller. <a href=\"https:\/\/gist.github.com\/tommcfarlin\/a1d3464ee4f84864a002f5568586795f#file-01-wp-insert-term-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">I det h\u00e4r exemplet<\/a> kommer jag att anv\u00e4nda en <strong>getName()-<\/strong> funktion p\u00e5 <strong>$customPost-\u00a0<\/strong> objektet.<\/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>Observera att jag ocks\u00e5 l\u00e4ser in resultatet av funktionen i en <strong>$termInfo-<\/strong> variabel. Vi kommer att anv\u00e4nda detta i n\u00e4sta steg f\u00f6r att sl\u00e5 upp f\u00f6r\u00e4ldern om den finns, och \u00e4ven till\u00e4mpa den p\u00e5 v\u00e5rt anpassade postobjekt.<\/p>\n<h3>3 Sl\u00e5 upp en termins f\u00f6r\u00e4lder<\/h3>\n<p>H\u00e4r kommer vi att anv\u00e4nda termen vi just skapade f\u00f6r att se om det finns en f\u00f6r\u00e4lder f\u00f6r det. Observera att om det returnerar falskt s\u00e5 existerar inte taxonomin (eller om termen inte hittas).<\/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=\"WordPress-taxonomier: Villkor, F\u00f6r\u00e4ldrar, Barn\" ><\/a><\/p>\n<p>F\u00f6r detta \u00e4ndam\u00e5l vill du l\u00e4gga till ett villkor till din kod f\u00f6r att skapa den, om det beh\u00f6vs. F\u00f6r att h\u00e5lla koden kortfattad utel\u00e4mnar jag den i <a href=\"https:\/\/gist.github.com\/tommcfarlin\/a1d3464ee4f84864a002f5568586795f#file-02-get-term-by-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">f\u00f6ljande kod<\/a> :<\/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>Observera att jag lagrar resultatet av ovanst\u00e5ende kod i en <strong>$parentTermInfo-<\/strong> variabel. Detta \u00e4r s\u00e5 att vi kan skicka detta till v\u00e5r sista funktion f\u00f6r att applicera f\u00f6r\u00e4ldrainformationen p\u00e5 v\u00e5rt postobjekt.<\/p>\n<h3>4 Till\u00e4mpa termen p\u00e5 ett inl\u00e4gg<\/h3>\n<p>Slutligen kommer vi att till\u00e4mpa termen (eller termerna) om det finns ett \u00f6verordnat objekt. Kom ih\u00e5g att det \u00e4r h\u00e4r det villkorliga kommer att beh\u00f6vas. Enkelt uttryckt, om det inte finns n\u00e5gon f\u00f6r\u00e4lder, kommer <strong>v\u00e4rdet $parentTermInfo[&#8217;parent&#8217;]<\/strong> inte att beh\u00f6vas.<\/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=\"WordPress-taxonomier: Villkor, F\u00f6r\u00e4ldrar, Barn\" ><\/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\">Men f\u00f6r koden nedan<\/a> antar vi att vi har den.<\/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>Fr\u00e5n kodreferensen, l\u00e4gg m\u00e4rke till att detta kommer att skapa termen om den inte redan finns; annars kommer det att anv\u00e4nda det som redan \u00e4r definierat och till\u00e4mpa det p\u00e5 inl\u00e4gget.<\/p>\n<h2>Och gjort<\/h2>\n<p>Generellt sett \u00e4r det inte s\u00e5 mycket jobb. Det hj\u00e4lper till att se till att du har en tydlig f\u00f6rst\u00e5else f\u00f6r hur taxonomier och deras termer fungerar. Vidare hj\u00e4lper det ocks\u00e5 att veta hur man h\u00e4mtar f\u00f6r\u00e4ldern till en given term om det \u00e4r vad du vill g\u00f6ra (annars \u00e4r det tredje steget inte n\u00f6dv\u00e4ndigt).<\/p>\n<p>Men f\u00f6rhoppningsvis ger l\u00e4nkarna och koden ovan dig allt du beh\u00f6ver f\u00f6r att skapa en taxonomi och till\u00e4mpa den p\u00e5 ett inl\u00e4gg (liksom en \u00f6verordnad term, om det beh\u00f6vs).<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>S\u00e4g att du skapar en l\u00f6sning s\u00e5 att du beh\u00f6ver till\u00e4mpa en taxonomi p\u00e5 den. Vidare vill du \u00e4ven till\u00e4mpa en \u00f6verordnad taxonomi p\u00e5 inl\u00e4gget.<\/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":[838,807,724,868],"tags":[1173],"class_list":["post-230863","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide-foer-nyboerjare","category-php-9","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230863","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=230863"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230863\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/235914"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=230863"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=230863"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=230863"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}