{"id":230043,"date":"2022-12-01T10:24:00","date_gmt":"2022-12-01T07:24:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230043"},"modified":"2022-11-09T19:50:37","modified_gmt":"2022-11-09T16:50:37","slug":"laegga-till-en-kroppsklass-baserat-paa-en-mall","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/laegga-till-en-kroppsklass-baserat-paa-en-mall\/","title":{"rendered":"L\u00e4gga till en kroppsklass baserat p\u00e5 en mall"},"content":{"rendered":"\n<p>Att arbeta med mallar i WordPress \u00e4r n\u00e5got som inte \u00e4r ovanligt. Allt \u00e4r en sorts mall \u2013 fr\u00e5n huvudsidesmallen, ensidig mall, 404-mall \u2013 hela v\u00e4gen till anpassade mallar.<\/p>\n<p>Men ibland kanske du vill till\u00e4mpa en klass p\u00e5 <code>body<\/code>elementet baserat p\u00e5 mallen som anv\u00e4nds s\u00e5 att du kan utforma just den h\u00e4r mallen lite annorlunda \u00e4n resten av webbplatsen.<\/p>\n<p>\u00c4ven om du kan g\u00f6ra det p\u00e5 ett antal olika s\u00e4tt, f\u00f6r att g\u00f6ra det har vi alla v\u00e5ra metoder s\u00e5 jag t\u00e4nkte dela med mig av mina.<\/p>\n<h2>Kroppsklass baserad p\u00e5 en mall<\/h2>\n<p>Innan du hoppar in i koden f\u00f6r att l\u00e4gga till en kroppsklass baserad p\u00e5 en mall \u00e4r det viktigt att notera att jag antar att mallen heter i f\u00f6ljande format: <code>template-{name-of-template}.php<\/code>.<\/p>\n<p>S\u00e5 l\u00e5t oss s\u00e4ga att du arbetar p\u00e5 en mall f\u00f6r att visa information om vikten du har g\u00e5tt ner p\u00e5 en m\u00e5nad och du vill g\u00f6ra det med en mall f\u00f6r detta. Mallen kan f\u00e5 ett namn <code>template-weight-loss.php<\/code>.<\/p>\n<p>H\u00e4r \u00e4r grejen: Att till\u00e4mpa klassnamnet p\u00e5 en enda sida som anv\u00e4nder den h\u00e4r mallen \u00e4r inte en stor sak. Men om du har flera sidor som anv\u00e4nder den h\u00e4r mallen (som, om du k\u00f6r en webbplats d\u00e4r m\u00e5nga m\u00e4nniskor kan anv\u00e4nda den h\u00e4r mallen, \u00e4r det vettigt, eller hur?) s\u00e5 vill du se till att du anv\u00e4nder klassnamnet till varje sida som den h\u00e4r mallen.<\/p>\n<p>Men hur?<\/p>\n<p>Det finns ett antal s\u00e4tt p\u00e5 vilket du kan g\u00f6ra detta, men det kr\u00e4ver \u00e5tminstone f\u00f6ljande:<\/p>\n<ol>\n<li>Att ansluta till <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/body_class\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">body_class-<\/a><\/strong> kroken WordPress ger,<\/li>\n<li>L\u00e4ser mallens namn,<\/li>\n<li>Till\u00e4mpa det p\u00e5 klassnamnet p\u00e5 kroppen (om sidan anv\u00e4nder mallen)<\/li>\n<\/ol>\n<p>Lyckligtvis \u00e4r det l\u00e4tt att g\u00f6ra eftersom kroken skickar en rad klasser till en kopplad funktion och ett givet inl\u00e4ggs metadata inkluderar om det anv\u00e4nder en mall eller inte.<\/p>\n<p>Med det sagt, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/e053ff5fdc82af9854bf7031d57a759d#file-00-add-body-class-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">s\u00e5 h\u00e4r kan detta uppn\u00e5s:<\/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>Observera att du kan anv\u00e4nda en st\u00e4ngning f\u00f6r detta snarare \u00e4n ett funktionsnamn kopplat och en oberoende funktion, men med tanke p\u00e5 att olika personer som l\u00e4ser detta anv\u00e4nder olika versioner av PHP, \u00e4r det enklaste s\u00e4ttet att visa detta att anv\u00e4nda det ovan.<\/p>\n<h2>Varf\u00f6r g\u00f6ra detta?<\/h2>\n<p>Generellt sett, om din sida har samma namn som mallen som anv\u00e4nds kommer den att ha ett klassnamn som matchar namnet p\u00e5 sidan.<\/p>\n<p>Det vill s\u00e4ga, l\u00e5t oss s\u00e4ga att du har en sida och dess namn \u00e4r Viktminskning. Elementet <code>body<\/code>kommer att ha en <code>weight loss<\/code>klass. Men om du anv\u00e4nder en andra, tredje, fj\u00e4rde eller s\u00e5 p\u00e5 en sida som har en annan titel, kommer den inte att ha den klassen.<\/p>\n<p>Om du vill s\u00e4kerst\u00e4lla att klassnamnet <code>body<\/code>\u00e4r baserat p\u00e5 mallen, kommer koden ovan att s\u00e4kerst\u00e4lla att detta fungerar.<\/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>Ett enkelt s\u00e4tt att till\u00e4mpa en kroppsklass baserat p\u00e5 ett mallnamn med hj\u00e4lp av WordPress API:er och PHP-funktioner.<\/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":[848,901,922,807,724,868],"tags":[1173],"class_list":["post-230043","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handledningar","category-koda","category-oevrig","category-php-9","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230043","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=230043"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230043\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/163533"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=230043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=230043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=230043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}