{"id":230773,"date":"2022-12-01T10:40:00","date_gmt":"2022-12-01T07:40:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230773"},"modified":"2022-11-09T23:56:09","modified_gmt":"2022-11-09T20:56:09","slug":"aggiunta-di-una-classe-corporea-basata-su-un-modello","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/aggiunta-di-una-classe-corporea-basata-su-un-modello\/","title":{"rendered":"Aggiunta di una classe corporea basata su un modello"},"content":{"rendered":"\n<p>Lavorare con i modelli in WordPress \u00e8 qualcosa che non \u00e8 raro. Tutto \u00e8 una sorta di modello, dal modello di pagina principale, al modello a pagina singola, al modello 404, fino ai modelli personalizzati.<\/p>\n<p>A volte, tuttavia, potresti voler applicare una classe <code>body<\/code>all&#8217;elemento in base al modello che viene utilizzato in modo da poter modellare questo particolare modello in modo leggermente diverso rispetto al resto del sito.<\/p>\n<p>Anche se puoi farlo in molti modi diversi, per farlo abbiamo tutti i nostri metodi, quindi ho pensato di condividere il mio.<\/p>\n<h2>Classe corporea basata su un modello<\/h2>\n<p>Prima di passare al codice per aggiungere una classe body basata su un modello, \u00e8 importante notare che suppongo che il modello sia denominato nel seguente formato: <code>template-{name-of-template}.php<\/code>.<\/p>\n<p>Quindi supponiamo che tu stia lavorando su un modello per visualizzare informazioni sul peso perso in un mese e desideri farlo utilizzando un modello per questo. Il modello pu\u00f2 essere denominato <code>template-weight-loss.php<\/code>.<\/p>\n<p>Ecco il punto: applicare il nome della classe a una singola pagina che utilizza questo modello non \u00e8 un grosso problema. Ma se hai pi\u00f9 pagine che utilizzano questo modello (che, se gestisci un sito in cui molte persone potrebbero utilizzare questo modello, ha senso, giusto?), allora vorrai assicurarti di applicare il nome della classe a ogni pagina che come questo modello.<\/p>\n<p>Ma come?<\/p>\n<p>Esistono diversi modi in cui puoi farlo, ma richiede almeno quanto segue:<\/p>\n<ol>\n<li>Agganciarsi all&#8217;hook <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/body_class\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">body_class che<\/a><\/strong> WordPress fornisce,<\/li>\n<li>Leggendo il nome del modello,<\/li>\n<li>Applicandolo al nome della classe del corpo (se la pagina utilizza il modello)<\/li>\n<\/ol>\n<p>Fortunatamente, \u00e8 facile da fare perch\u00e9 l&#8217;hook passa un array di classi in una funzione agganciata e i metadati di un determinato post includono se sta usando o meno un modello.<\/p>\n<p>Detto questo, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/e053ff5fdc82af9854bf7031d57a759d#file-00-add-body-class-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ecco come questo pu\u00f2 essere ottenuto:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\nadd_filter('body_class', 'acme_add_body_class');\n\/**\n * If the current page has a template, apply it's name to the list of classes. This is\n * necessary if there are multiple pages with the same template and you want to apply the\n * name of the template to the class of the body.\n *\n * @param array $classes The current array of attributes to be applied to the \n *\/\nfunction acme_add_body_class($classes)\n{\n  if (!empty(get_post_meta(get_the_ID(), '_wp_page_template', true))) {\n      \/\/ Remove the `template-` prefix and get the name of the template without the file extension.\n      $templateName = basename(get_page_template_slug(get_the_ID()));\n      $templateName = str_ireplace('template-', '', basename(get_page_template_slug(get_the_ID()), '.php'));\n\n      $classes[] = $templateName;\n  }\n\n  return array_filter($classes);\n}\n<\/code><\/pre>\n<p>Nota che puoi usare una chiusura per questo piuttosto che un nome di funzione agganciato e una funzione indipendente, ma dato che persone diverse che leggono questo usano versioni diverse di PHP, il modo pi\u00f9 semplice per dimostrarlo \u00e8 usarlo sopra.<\/p>\n<h2>Perch\u00e9 farlo?<\/h2>\n<p>In generale, se la tua pagina ha lo stesso nome del modello che viene applicato, avr\u00e0 un nome di classe che corrisponde al nome della pagina.<\/p>\n<p>Cio\u00e8, diciamo che hai una pagina e il suo nome \u00e8 Weight Loss. L&#8217; <code>body<\/code>elemento avr\u00e0 una <code>weight loss<\/code>classe. Ma se usi un secondo, terzo, quarto o gi\u00f9 di l\u00ec su una pagina con un titolo diverso, non avr\u00e0 quella classe.<\/p>\n<p>Se vuoi assicurarti che <code>body<\/code>abbia il nome della classe basato sul modello, il codice sopra assicurer\u00e0 che funzioni.<\/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>Un modo semplice per applicare una classe body basata sul nome di un modello utilizzando le API di WordPress e le funzioni PHP.<\/p>\n","protected":false},"author":1,"featured_media":163533,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[918,896,804,720,844,865],"tags":[1168],"class_list":["post-230773","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-altro","category-codice","category-php-6","category-sviluppatore","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230773","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=230773"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230773\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/163533"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=230773"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=230773"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=230773"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}