{"id":231653,"date":"2022-12-21T12:33:00","date_gmt":"2022-12-21T09:33:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231653"},"modified":"2022-12-07T10:26:47","modified_gmt":"2022-12-07T07:26:47","slug":"tassonomie-di-wordpress-termini-genitori-figli","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/tassonomie-di-wordpress-termini-genitori-figli\/","title":{"rendered":"Tassonomie di WordPress: termini, genitori, figli"},"content":{"rendered":"\n<p>La creazione di tassonomie in modo programmatico sembra essere un punto che emerge di tanto in tanto per coloro che stanno costruendo soluzioni per altri su WordPress.<\/p>\n<p>Le tassonomie stesse possono anche creare un po&#8217; di confusione; tuttavia, ho scoperto che quanto segue di solito aiuta a consolidare un po&#8217; il concetto:<\/p>\n<p>Le tassonomie gerarchiche sono analoghe alle categorie; le tassonomie non gerarchiche sono analoghe ai tag.<\/p>\n<p>Tuttavia, supponiamo che tu stia creando una soluzione per qualcuno tale da dover importare informazioni come post e applicarvi una tassonomia. Inoltre, forse vuoi applicare anche una tassonomia genitore al post.<\/p>\n<p>Come possiamo farlo?<\/p>\n<h2>Tassonomie di WordPress: registrazione, genitori, figli e altro<\/h2>\n<p>La situazione \u00e8 pi\u00f9 o meno questa:<\/p>\n<p>Hai un post a cui verr\u00e0 applicata una tassonomia. Se la tassonomia ha un genitore, vogliamo applicarlo anche al post.<\/p>\n<p>Per fare ci\u00f2, avremo bisogno di quattro (forse cinque) funzioni:<\/p>\n<ol>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/register_taxonomy\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">registro_tassonomia<\/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>Aggiungo anche che penso sia una buona idea usare <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/sanitize_title_with_dashes\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sanitize_title_with_dash<\/a> se hai intenzione di usare un tipo di stringa in entrata non disinfettata per lo slug del tipo post (ma non \u00e8 necessario se non lo sei, ovviamente ).<\/p>\n<h3>1 Registra la tassonomia<\/h3>\n<p>Per questo esempio, creeremo una tassonomia per un tipo di post personalizzato.<\/p>\n<p>Poich\u00e9 questo potrebbe essere qualsiasi cosa su cui stai lavorando, user\u00f2 una variabile chiamata <strong>$postType<\/strong> per dimostrare <a href=\"https:\/\/gist.github.com\/tommcfarlin\/a1d3464ee4f84864a002f5568586795f#file-00-register-taxonomy-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">il punto<\/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>\u00c8 abbastanza semplice, ma prendi nota dal <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_taxonomy\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">riferimento del codice<\/a> :<\/p>\n<blockquote>\n<p>Una semplice funzione per creare o modificare un oggetto tassonomia in base ai parametri forniti. Se si modifica un oggetto tassonomia esistente, si noti che il <code>$object_type<\/code>valore della registrazione originale verr\u00e0 sovrascritto.<\/p>\n<\/blockquote>\n<p>In genere, questo non \u00e8 un problema, ma se stai lavorando su un&#8217;applicazione di grandi dimensioni o su un&#8217;applicazione preesistente, \u00e8 qualcosa da tenere a mente.<\/p>\n<h3>2 Inserire un termine per la tassonomia<\/h3>\n<p>Quindi, supponi che un <strong>$customPost ti<\/strong> sia reso disponibile e che abbia una funzione per recuperare il suo nome, il suo titolo o qualche altra propriet\u00e0 utilizzata per identificarlo (diversa dal suo ID).<\/p>\n<\/p>\n<p>Questo potrebbe essere passato in una funzione o potrebbe essere reso disponibile tramite qualsiasi uso di altre funzioni fornite da WordPress. <a href=\"https:\/\/gist.github.com\/tommcfarlin\/a1d3464ee4f84864a002f5568586795f#file-01-wp-insert-term-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">In questo esempio<\/a> utilizzer\u00f2 una funzione getName <strong>()<\/strong> <strong>sull&#8217;oggetto $customPost\u00a0<\/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>Nota che sto anche leggendo il risultato della funzione in una\u00a0 variabile <strong>$termInfo<\/strong>. Lo useremo nel passaggio successivo per cercare il genitore se esiste e lo applicheremo anche al nostro oggetto post personalizzato.<\/p>\n<h3>3 Cerca il genitore di un termine<\/h3>\n<p>Qui useremo il termine che abbiamo appena creato per vedere se esiste un genitore per questo. Nota che se restituisce false, la tassonomia non esiste (o se il termine non viene trovato).<\/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=\"Tassonomie di WordPress: termini, genitori, figli\" ><\/a><\/p>\n<p>A tal fine, ti consigliamo di aggiungere un condizionale al tuo codice per crearlo, se necessario. Per mantenere il codice conciso, tuttavia, lo sto omettendo nel <a href=\"https:\/\/gist.github.com\/tommcfarlin\/a1d3464ee4f84864a002f5568586795f#file-02-get-term-by-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">codice seguente<\/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>Si noti che memorizzo il risultato del codice sopra in una\u00a0 variabile <strong>$parentTermInfo<\/strong>. Questo \u00e8 cos\u00ec che possiamo passarlo alla nostra funzione finale per applicare le informazioni genitore al nostro oggetto post.<\/p>\n<h3>4 Applicare il termine a un post<\/h3>\n<p>Infine, applicheremo il termine (o termini) se \u00e8 presente un oggetto padre. Ricorda che \u00e8 qui che sar\u00e0 necessario il condizionale. In poche parole, se non c&#8217;\u00e8 un genitore, il <strong>valore $parentTermInfo[&#8216;parent&#8217;]<\/strong> non sar\u00e0 necessario.<\/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=\"Tassonomie di WordPress: termini, genitori, figli\" ><\/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\">Ma per il codice qui sotto<\/a>, supponiamo di averlo.<\/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>Dal riferimento al codice, nota che questo creer\u00e0 il termine se non esiste gi\u00e0; in caso contrario, utilizzer\u00e0 ci\u00f2 che \u00e8 gi\u00e0 definito e lo applicher\u00e0 al post.<\/p>\n<h2>E Fatto<\/h2>\n<p>In generale, non \u00e8 molto lavoro. Aiuta ad assicurarsi di avere una chiara comprensione di come funzionano le tassonomie e i loro termini. Inoltre, aiuta anche sapere come recuperare il genitore di un dato termine se \u00e8 quello che vuoi fare (altrimenti, il terzo passaggio non \u00e8 necessario).<\/p>\n<p>Ma si spera che i collegamenti e il codice sopra ti forniscano tutto ci\u00f2 di cui hai bisogno per creare una tassonomia e applicarla a un post (oltre a un termine padre, se necessario).<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Supponiamo che tu stia creando una soluzione tale da dover applicare una tassonomia ad essa. Inoltre, vuoi applicare anche una tassonomia padre al post.<\/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":[835,804,720,865],"tags":[1168],"class_list":["post-231653","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guida-per-principianti","category-php-6","category-sviluppatore","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231653","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=231653"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231653\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/235914"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=231653"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=231653"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=231653"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}