{"id":233632,"date":"2023-02-18T13:32:00","date_gmt":"2023-02-18T10:32:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233632"},"modified":"2022-11-11T00:44:58","modified_gmt":"2022-11-10T21:44:58","slug":"samouczek-motywu-wordpress-dla-poczatkujacych-czesc-3-dynamiczna-zawartosc","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/samouczek-motywu-wordpress-dla-poczatkujacych-czesc-3-dynamiczna-zawartosc\/","title":{"rendered":"Samouczek motywu WordPress dla pocz\u0105tkuj\u0105cych \u2013 cz\u0119\u015b\u0107 3: Dynamiczna zawarto\u015b\u0107"},"content":{"rendered":"\n<p>W tej lekcji samouczka motywu WordPress dla pocz\u0105tkuj\u0105cych dowiemy si\u0119 o haczykach w WordPressie i dodamy kilka haczyk\u00f3w w naszym motywie, kt\u00f3re s\u0105 wymagane, aby motyw dzia\u0142a\u0142 poprawnie z WordPress i wtyczkami. W naszym nag\u0142\u00f3wku zaczniemy r\u00f3wnie\u017c uzyskiwa\u0107 dost\u0119p do dynamicznych tre\u015bci z WordPressa, takich jak automatyczne pobieranie aktualnego tytu\u0142u strony.<\/p>\n<p>Najpierw musimy dowiedzie\u0107 si\u0119 troch\u0119 o hookach w WordPressie. Hooki to podstawowa funkcjonalno\u015b\u0107, z kt\u00f3r\u0105 musisz si\u0119 zapozna\u0107. Nie jestem fanem pokazywania ca\u0142ej masy kodu, w kt\u00f3rym trzeba skopiowa\u0107 i wklei\u0107, nie wiedz\u0105c, co naprawd\u0119 robi. Je\u015bli \u015bledzisz ten samouczek, chcesz si\u0119 tego w\u0142a\u015bciwie nauczy\u0107, prawda?<\/p>\n<p>Nie martw si\u0119, na razie streszcz\u0119. Dowiemy si\u0119 o nich wi\u0119cej w dalszej cz\u0119\u015bci tego samouczka.<\/p>\n<h2>Haki w WordPressie<\/h2>\n<p>W skr\u00f3cie; poniewa\u017c WordPress wykonuje ca\u0142y kod w celu za\u0142adowania i renderowania strony, istniej\u0105 pewne \u201epunkty kontrolne&quot; \u2013 kt\u00f3re nazywamy hakami. W tych punktach WordPress pozwala programistom modyfikowa\u0107 lub dodawa\u0107 w\u0142asny kod. WordPress zdefiniowa\u0142 ca\u0142\u0105 mas\u0119 \u201epunkt\u00f3w kontrolnych&#8221;, w kt\u00f3rych, ka\u017cda z unikatow\u0105 nazw\u0105. Je\u015bli znasz jej nazw\u0119, mo\u017cesz doda\u0107 w\u0142asny kod w tych punktach kontrolnych. W ten spos\u00f3b \u0142atwo powiedz WordPressowi, aby uruchomi\u0142 Tw\u00f3j kod, gdy dotrze do tego punktu kontrolnego w ramach swojego procesu.<\/p>\n<p>Istniej\u0105 dwa rodzaje haczyk\u00f3w; dzia\u0142ania i filtry. <strong>Akcje<\/strong> to punkty w kodzie, w kt\u00f3rych mo\u017cesz doda\u0107 niestandardowy kod, na przyk\u0142ad wyprowadzanie czego\u015b lub robienie czego\u015b do w\u0142asnych cel\u00f3w. <strong>Filtry<\/strong> to punkty w kodzie, w kt\u00f3rych mo\u017cna zmodyfikowa\u0107 okre\u015blon\u0105 zmienn\u0105 przed jej u\u017cyciem lub wyprowadzeniem. S\u0105 bardzo podobne, ale filtry s\u0105 przypisane do jednej konkretnej zmiennej, a akcje nie.<\/p>\n<p>Wtyczki, motywy i sam WordPress mog\u0105 \u201ezahaczy\u0107&#8221; sw\u00f3j kod za pomoc\u0105 <code>add_action()<\/code>akcji i <code>add_filter()<\/code>filtr\u00f3w. Te dwie funkcje informuj\u0105 WordPress, aby uruchamia\u0142 przechwycony kod za ka\u017cdym razem, gdy wykonanie dotrze do tych przechwytuj\u0105cych.<\/p>\n<p>W celu zdefiniowania hook\u00f3w, kt\u00f3rych u\u017cywasz <code>do_action()<\/code>do akcji i <code>apply_filters()<\/code>filtr\u00f3w.<\/p>\n<p>Dla ka\u017cdego, kto chce dowiedzie\u0107 si\u0119 wi\u0119cej, mam kolejny <a href=\"http:\/\/awhitepixel.com\/blog\/all-about-hooks-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">post, kt\u00f3ry szczeg\u00f3\u0142owo omawia hooki<\/a> w WordPressie.<\/p>\n<p>Motyw WordPress musi zawiera\u0107 okre\u015blone wa\u017cne haki (akcje). Te haki pozwalaj\u0105 WordPressowi, wtyczkom i samemu motywowi na podpi\u0119cie si\u0119 i wykonywanie krytycznych rzeczy. Sp\u00f3jrzmy na te krytyczne haki, kt\u00f3re musimy doda\u0107.<\/p>\n<h2>Haki nag\u0142\u00f3wka i stopki motywu<\/h2>\n<p>Wszystkie motywy WordPress musz\u0105 mie\u0107 w szablonach dwa haki. Jedn\u0105 akcj\u0119 nale\u017cy umie\u015bci\u0107 w nag\u0142\u00f3wku (wewn\u0105trz <code>&lt;head&gt;<\/code>tagu), a drug\u0105 w stopce (tu\u017c przed zamkni\u0119ciem <code>&lt;\/body&gt;<\/code>tagu). Te dwa haki s\u0105 absolutnie niezb\u0119dne, aby WordPress, Tw\u00f3j motyw i dowolna wtyczka mog\u0142y doda\u0107 swoje skrypty i kod styl\u00f3w do Twojego motywu.<\/p>\n<p>Haki, kt\u00f3rych potrzebujemy, to <code>wp_head<\/code>odpowiednio <code>wp_footer<\/code>dla nag\u0142\u00f3wka i stopki.<\/p>\n<p>Normalnie, gdy chcemy uruchomi\u0107 hak, wywo\u0142amy <code>do_action(&lt;hook name&gt;)<\/code>. Ale poniewa\u017c te dwa zaczepy s\u0105 tak wa\u017cne, WordPress upro\u015bci\u0142 je dla nas, umieszczaj\u0105c je w prostym wywo\u0142aniu funkcji. Wi\u0119c dla tych dw\u00f3ch haczyk\u00f3w mo\u017cesz po prostu u\u017cy\u0107 <code>wp_head()<\/code>i <code>wp_footer()<\/code>. W tle te dwa uruchamiaj\u0105 <code>do_action()<\/code>.<\/p>\n<p>Dodajmy te dwa zaczepy (wywo\u0142ania funkcji) do naszych szablon\u00f3w nag\u0142\u00f3wka i stopki i zobaczmy, co si\u0119 stanie.<\/p>\n<pre><code>&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n    &lt;head&gt;\n        &lt;meta charset=\"utf-8\"&gt;\n        &lt;title&gt;A White Pixel Theme&lt;\/title&gt;\n\u00a0\n        &lt;?php wp_head(); ?&gt;\n    &lt;\/head&gt;\n&lt;body&gt;<\/code><\/pre>\n<pre><code>        &lt;?php wp_footer(); ?&gt;\n    &lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Hit od\u015bwie\u017cania na swoim interfejsie. Je\u015bli jeste\u015b zalogowany, powiniene\u015b teraz zobaczy\u0107 pasek administratora WordPressa! Oznacza to, \u017ce WordPress mo\u017ce teraz z powodzeniem dodawa\u0107 swoje skrypty i style do Twojego motywu.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152824-61e4fb80a88c0.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-152824-61e4fb80a88c0.png\" alt=\"Samouczek motywu WordPress dla pocz\u0105tkuj\u0105cych \u2013 cz\u0119\u015b\u0107 3: Dynamiczna zawarto\u015b\u0107\" ><\/a><\/p>\n<p>Mo\u017cesz sprawdzi\u0107 \u017ar\u00f3d\u0142o HTML i zobaczy\u0107, \u017ce nag\u0142\u00f3wek zawiera teraz sporo kodu. To jest kod, kt\u00f3rego nie doda\u0142e\u015b do swojego motywu. Jak wida\u0107, sam WordPress u\u017cywa haczyk\u00f3w, kt\u00f3re dodali\u015bmy, aby robi\u0107 w\u0142asne rzeczy.<\/p>\n<p>Przejd\u017amy od hook\u00f3w i zacznijmy zastanawia\u0107 si\u0119, jak mo\u017cemy dynamicznie pobiera\u0107 tre\u015bci z WordPressa i wy\u015bwietla\u0107 je w naszym nag\u0142\u00f3wku.<\/p>\n<h2>Tre\u015b\u0107 dynamiczna w nag\u0142\u00f3wku<\/h2>\n<p>Powiedzmy WordPressowi, aby dynamicznie ustawia\u0142 tytu\u0142 dokumentu (dla <code>&lt;title&gt;<\/code>tagu). W tym celu u\u017cyjemy funkcji (kt\u00f3ra nawiasem m\u00f3wi\u0105c ma filtr) o nazwie <code>wp_title()<\/code>. Jak dowiedzieli\u015bmy si\u0119 powy\u017cej, poniewa\u017c <code>wp_title()<\/code>jest to filtr, Ty, WordPress lub wtyczki mo\u017cesz modyfikowa\u0107 dane wyj\u015bciowe. Dodamy do tego filtr w dalszej cz\u0119\u015bci tego samouczka.<\/p>\n<p>Funkcja <code>wp_title()<\/code>przyjmuje <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_title\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kilka argument\u00f3w<\/a>, kt\u00f3re mo\u017cesz dostosowa\u0107 do w\u0142asnych upodoba\u0144, ale na razie dodam pusty ci\u0105g, aby wy\u015bwietla\u0142 tylko tytu\u0142 dowolnej strony, na kt\u00f3rej si\u0119 znajdujemy.<\/p>\n<p>Zmie\u0144 sw\u00f3j <code>&lt;title&gt;<\/code>tag <code>header.php<\/code>na to:<\/p>\n<pre><code>&lt;title&gt;&lt;?php wp_title(''); ?&gt;&lt;\/title&gt;<\/code><\/pre>\n<p>Zapewne zauwa\u017cy\u0142e\u015b, \u017ce strona g\u0142\u00f3wna nie wygeneruje tytu\u0142u. Jest to standardowe zachowanie WordPressa, kt\u00f3re naprawimy w dalszej cz\u0119\u015bci tego samouczka (zrobimy to za pomoc\u0105 filtra). Je\u015bli odwiedzasz pojedynczy post lub stron\u0119, powiniene\u015b otrzyma\u0107 tytu\u0142 posta.<\/p>\n<p>WordPress ma fajn\u0105 funkcj\u0119, kt\u00f3ra dynamicznie generuje kilka klas dla <code>&lt;body&gt;<\/code>tagu w zale\u017cno\u015bci od tego, na kt\u00f3rej stronie si\u0119 znajdujemy; o nazwie <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/body_class\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">body_class<\/a>. Zaktualizuj <code>&lt;body&gt;<\/code>tag w <code>header.php<\/code>nast\u0119puj\u0105cy spos\u00f3b:<\/p>\n<pre><code>&lt;body &lt;?php body_class(); ?&gt;&gt;<\/code><\/pre>\n<p>Od\u015bwie\u017c i sp\u00f3jrz na wszystkie klasy dodane do <code>&lt;body&gt;<\/code>tagu. Zajrzyj na r\u00f3\u017cne strony (strona tytu\u0142owa, single, kategoria). Wszystkie te klasy s\u0105 bardzo przydatne do stylizacji i r\u00f3\u017cnicowania r\u00f3\u017cnych podobnych cz\u0119\u015bci. Najprawdopodobniej u\u017cyjesz kilku z nich w swoim CSS.<\/p>\n<p>Aby post\u0119powa\u0107 zgodnie z dobrymi praktykami HTML, powinni\u015bmy r\u00f3wnie\u017c poinformowa\u0107 o j\u0119zyku witryny w HTML. W tym celu u\u017cywamy funkcji WordPress, aby pobra\u0107 j\u0119zyk z Ustawie\u0144; <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/language_attributes\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">atrybuty_j\u0119zykowe<\/a>.<\/p>\n<pre><code>&lt;html &lt;?php language_attributes(); ?&gt;&gt;<\/code><\/pre>\n<p>I na koniec chcia\u0142bym doda\u0107 kilka metatag\u00f3w i takich, kt\u00f3re nie s\u0105 specyficzne dla WordPressa, ale stosuj\u0105 typowe praktyki projektowania stron internetowych. <code>header.php<\/code>Tak wygl\u0105da pe\u0142ny plik:<\/p>\n<pre><code>&lt;!DOCTYPE html&gt;\n&lt;html class=\"no-js\" &lt;?php language_attributes(); ?&gt;&gt;\n&lt;head&gt;\n    &lt;meta charset=\"utf-8\"&gt;\n    &lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"&gt;\n\u00a0\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n    &lt;title&gt;&lt;?php wp_title(''); ?&gt;&lt;\/title&gt;\n\u00a0\n    &lt;?php wp_head(); ?&gt;\n&lt;\/head&gt;\n&lt;body &lt;?php body_class(); ?&gt;&gt;<\/code><\/pre>\n<p>W nast\u0119pnym kroku w tym samouczku wyjdziemy <code>header.php<\/code>i zag\u0142\u0119bimy si\u0119 <code>index.php<\/code>, aby dowiedzie\u0107 si\u0119, jak pobiera\u0107 bardziej dynamiczn\u0105 zawarto\u015b\u0107, tak\u0105 jak posty.<\/p>\n<h2>Dokumentacja dotycz\u0105ca zastosowanych metod<\/h2>\n<ul>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_head\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_head<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_footer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_stopka<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_title\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_title<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/body_class\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">body_class<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/language_attributes\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">atrybuty_j\u0119zykowe<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tej lekcji dowiesz si\u0119 o hookach w WordPressie oraz o tym, jak uzyska\u0107 dost\u0119p do dynamicznej zawarto\u015bci z WordPressa w nag\u0142\u00f3wku i wyprowadzi\u0107 j\u0105.<\/p>\n","protected":false},"author":1,"featured_media":224746,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[897,721,721,919,897,919,1110,836,836,845,929,929,845,866,866],"tags":[1169],"class_list":["post-233632","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kod","category-deweloper","category-inny","category-n-a","category-przewodnik-dla-poczatkujacych","category-samouczki","category-tematy","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233632","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=233632"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233632\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/224746"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=233632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=233632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=233632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}