{"id":229956,"date":"2022-12-01T10:52:00","date_gmt":"2022-12-01T07:52:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229956"},"modified":"2022-11-09T19:27:25","modified_gmt":"2022-11-09T16:27:25","slug":"dodawanie-klasy-ciala-na-podstawie-szablonu","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/dodawanie-klasy-ciala-na-podstawie-szablonu\/","title":{"rendered":"Dodawanie klasy cia\u0142a na podstawie szablonu"},"content":{"rendered":"\n<p>Praca z szablonami w WordPressie to co\u015b, co nie jest rzadko\u015bci\u0105. Wszystko jest swego rodzaju szablonem \u2013 od szablonu strony g\u0142\u00f3wnej, szablonu pojedynczej strony, szablonu 404 \u2013 a\u017c do szablon\u00f3w niestandardowych.<\/p>\n<p>Czasami jednak mo\u017cesz chcie\u0107 zastosowa\u0107 klas\u0119 do <code>body<\/code>elementu opart\u0105 na szablonie, kt\u00f3ry jest u\u017cywany, aby m\u00f3c stylizowa\u0107 ten konkretny szablon nieco inaczej ni\u017c reszta witryny.<\/p>\n<p>Chocia\u017c mo\u017cesz to zrobi\u0107 na wiele r\u00f3\u017cnych sposob\u00f3w, wszyscy mamy na to swoje metody, wi\u0119c pomy\u015bla\u0142em, \u017ce podziel\u0119 si\u0119 swoimi.<\/p>\n<h2>Klasa cia\u0142a oparta na szablonie<\/h2>\n<p>Przed przej\u015bciem do kodu dodawania klasy tre\u015bci opartej na szablonie nale\u017cy zauwa\u017cy\u0107, \u017ce zak\u0142adam, \u017ce szablon ma nazw\u0119 w nast\u0119puj\u0105cym formacie: <code>template-{name-of-template}.php<\/code>.<\/p>\n<p>Za\u0142\u00f3\u017cmy, \u017ce pracujesz nad szablonem do wy\u015bwietlania informacji o wadze, kt\u00f3r\u0105 schud\u0142e\u015b w ci\u0105gu miesi\u0105ca i chcesz to zrobi\u0107, u\u017cywaj\u0105c do tego szablonu. Szablon mo\u017ce mie\u0107 nazw\u0119 <code>template-weight-loss.php<\/code>.<\/p>\n<p>Oto rzecz: zastosowanie nazwy klasy do pojedynczej strony korzystaj\u0105cej z tego szablonu nie jest wielkim problemem. Ale je\u015bli masz wiele stron, kt\u00f3re u\u017cywaj\u0105 tego szablonu (co, je\u015bli prowadzisz witryn\u0119, w kt\u00f3rej wiele os\u00f3b mo\u017ce korzysta\u0107 z tego szablonu, ma to sens, prawda?), wtedy b\u0119dziesz chcia\u0142 si\u0119 upewni\u0107, \u017ce stosujesz nazw\u0119 klasy do ka\u017cdej strony, kt\u00f3ra jako ten szablon.<\/p>\n<p>Ale jak?<\/p>\n<p>Mo\u017cna to zrobi\u0107 na kilka sposob\u00f3w, ale wymaga to co najmniej nast\u0119puj\u0105cych czynno\u015bci:<\/p>\n<ol>\n<li>Pod\u0142\u0105czanie do haka <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/body_class\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">body_class<\/a><\/strong> zapewnia WordPress,<\/li>\n<li>Odczytanie nazwy szablonu,<\/li>\n<li>Zastosowanie go do nazwy klasy tre\u015bci (je\u015bli strona korzysta z szablonu)<\/li>\n<\/ol>\n<p>Na szcz\u0119\u015bcie jest to \u0142atwe, poniewa\u017c przechwycenie przekazuje tablic\u0119 klas do przechwyconej funkcji, a metadane danego posta zawieraj\u0105 informacj\u0119, czy u\u017cywa on szablonu.<\/p>\n<p>Powiedziawszy to, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/e053ff5fdc82af9854bf7031d57a759d#file-00-add-body-class-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">oto jak mo\u017cna to osi\u0105gn\u0105\u0107:<\/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>Zauwa\u017c, \u017ce mo\u017cesz u\u017cy\u0107 do tego zamkni\u0119cia zamiast nazwy funkcji i niezale\u017cnej funkcji, ale bior\u0105c pod uwag\u0119, \u017ce r\u00f3\u017cne osoby czytaj\u0105ce to u\u017cywaj\u0105 r\u00f3\u017cnych wersji PHP, naj\u0142atwiejszym sposobem zademonstrowania tego jest u\u017cycie tego powy\u017cej.<\/p>\n<h2>Czemu to robi\u0107?<\/h2>\n<p>Og\u00f3lnie rzecz bior\u0105c, je\u015bli Twoja strona ma tak\u0105 sam\u0105 nazw\u0119 jak szablon, kt\u00f3ry jest stosowany, to b\u0119dzie mia\u0142a nazw\u0119 klasy, kt\u00f3ra odpowiada nazwie strony.<\/p>\n<p>To znaczy, za\u0142\u00f3\u017cmy, \u017ce masz jedn\u0105 stron\u0119, a jej nazwa to Odchudzanie. Element <code>body<\/code>b\u0119dzie mia\u0142 <code>weight loss<\/code>klas\u0119. Ale je\u015bli u\u017cyjesz drugiej, trzeciej, czwartej lub czego\u015b podobnego na stronie o innym tytule, nie b\u0119dzie ona mia\u0142a tej klasy.<\/p>\n<p>Je\u015bli chcesz si\u0119 upewni\u0107, \u017ce <code>body<\/code>ma nazw\u0119 klasy opart\u0105 na szablonie, powy\u017cszy kod zapewni, \u017ce to zadzia\u0142a.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Prosty spos\u00f3b na zastosowanie klasy tre\u015bci opartej na nazwie szablonu za pomoc\u0105 API WordPress i funkcji 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":[721,919,897,805,845,866],"tags":[1169],"class_list":["post-229956","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-inny","category-kod","category-php-7","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229956","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=229956"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/229956\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/163533"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=229956"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=229956"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=229956"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}