{"id":233943,"date":"2023-02-26T17:58:00","date_gmt":"2023-02-26T14:58:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233943"},"modified":"2022-11-11T13:19:37","modified_gmt":"2022-11-11T10:19:37","slug":"samouczek-motywu-wordpress-dla-poczatkujacych-czesc-4-petla-postu","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/samouczek-motywu-wordpress-dla-poczatkujacych-czesc-4-petla-postu\/","title":{"rendered":"Samouczek motywu WordPress dla pocz\u0105tkuj\u0105cych \u2013 cz\u0119\u015b\u0107 4: P\u0119tla postu"},"content":{"rendered":"\n<p>W tej lekcji samouczka motywu WordPress dla pocz\u0105tkuj\u0105cych om\u00f3wimy szczeg\u00f3\u0142owo \u201ep\u0119tl\u0119 post\u00f3w&quot; w WordPress; co to jest, jak wygl\u0105da, dlaczego jej u\u017cywamy i jak uzyska\u0107 dost\u0119p do post\u00f3w. Nast\u0119pnie zajmiemy si\u0119 implementacj\u0105 p\u0119tla w naszym motywie.<\/p>\n<h2>P\u0119tla postu<\/h2>\n<p>Je\u015bli znasz PHP, mo\u017cesz rozpozna\u0107, \u017ce \u201ep\u0119tla&#8221; to technika przechodzenia przez ka\u017cdy element tablicy lub obiektu za pomoc\u0105 <code>for<\/code>lub. P\u0119tla w WordPressie dzia\u0142a w\u0142a\u015bnie tak. Ale u\u017cyjemy w\u0142asnych funkcji WordPressa do zap\u0119tlenia, aby uzyska\u0107 dodatkowe korzy\u015bci i uproszczenia.<code>foreach``while<\/code><\/p>\n<p>Przez ca\u0142y czas WordPress ju\u017c pyta\u0142 o posty \u2013 w zale\u017cno\u015bci od tego, na kt\u00f3rej stronie si\u0119 znajdujesz. Je\u015bli jeste\u015b na stronie kategorii, WordPress sprawdzi\u0142 ju\u017c wszystkie posty zwi\u0105zane z t\u0105 kategori\u0105, a je\u015bli jeste\u015b na stronie z jednym postem, WordPress ju\u017c pobra\u0142 dla Ciebie ten jeden post.<\/p>\n<p>Kiedy chcemy uzyska\u0107 dost\u0119p do post\u00f3w, kt\u00f3re WordPress pyta\u0142 w naszych szablonach, dodajemy p\u0119tl\u0119. Wewn\u0105trz p\u0119tli mamy dost\u0119p do ka\u017cdego posta. A dla ka\u017cdego posta decydujemy, co pokaza\u0107 lub zrobi\u0107.<\/p>\n<p>Uwaga: Nawet w szablonach pojedynczego posta lub pojedynczej strony dodasz p\u0119tl\u0119, mimo \u017ce wiemy, \u017ce zawiera tylko jeden post! P\u0119tla po prostu dzia\u0142a tylko raz.<\/p>\n<p>Oto p\u0119tla WordPressa w ca\u0142ej okaza\u0142o\u015bci:<\/p>\n<pre><code>while (have_posts()): the_post();\n    \/\/ Access to each post here\nendwhile;<\/code><\/pre>\n<p>Ten fragment kodu robi dwie rzeczy. Cz\u0119\u015b\u0107 <code>while<\/code>(w tym <code>endwhile<\/code>) to cz\u0119\u015b\u0107 zap\u0119tlona, \u200b\u200bkt\u00f3ra b\u0119dzie si\u0119 zap\u0119tla\u0107 bez wzgl\u0119du na to, jak d\u0142ugo pozostan\u0105 jakiekolwiek posty. Druga cz\u0119\u015b\u0107 to ustawienie <code>the_post()<\/code>uproszczonego i intuicyjnego dost\u0119pu do obiektu postu wewn\u0105trz p\u0119tli. Wi\u0119cej o tym dowiemy si\u0119 p\u00f3\u017aniej.<\/p>\n<p>Dobr\u0105 praktyk\u0105 jest zawijanie p\u0119tli wewn\u0105trz <code>if<\/code>sprawdzania, kt\u00f3re sprawdza, czy rzeczywi\u015bcie s\u0105 jakie\u015b posty, przez kt\u00f3re mo\u017cna przej\u015b\u0107. Wtedy mo\u017cemy r\u00f3wnie\u017c opcjonalnie pokaza\u0107 komunikat, je\u015bli ich nie by\u0142o. Zapytanie o post mo\u017ce by\u0107 puste, je\u015bli przejdziesz do pustego archiwum kategorii lub spr\u00f3bujesz wyszuka\u0107 co\u015b, co nie ma trafie\u0144. To jest lepsza wersja p\u0119tli:<\/p>\n<pre><code>if (have_posts()) {\n    while (have_posts()): the_post();\n        \/\/ Access to each post here\n    endwhile;\n} else {\n    ?&gt;&lt;p&gt;No posts, sorry.&lt;\/p&gt;&lt;?php\n}<\/code><\/pre>\n<p>Zapoznaj si\u0119 z tym fragmentem kodu, poniewa\u017c b\u0119dziesz go powtarza\u0107 za ka\u017cdym razem, gdy b\u0119dziesz chcia\u0142 uzyska\u0107 dost\u0119p do post\u00f3w! Zaimplementujmy p\u0119tl\u0119 w naszym motywie.<\/p>\n<h2>Implementacja p\u0119tli w naszym motywie<\/h2>\n<p>Dodajmy p\u0119tl\u0119 do naszego <code>index.php<\/code>, zast\u0119puj\u0105c fikcyjny tekst.<\/p>\n<pre><code>&lt;?php get_header(); ?&gt;\n&lt;?php \nif (have_posts()) {\n    while (have_posts()): the_post();\n        the_title();\n    endwhile;\n} else {\n    ?&gt;&lt;p&gt;No posts, sorry.&lt;\/p&gt;&lt;?php\n}\n?&gt;\n&lt;?php get_sidebar(); ?&gt;\n&lt;?php get_footer(); ?&gt;<\/code><\/pre>\n<p>Doda\u0142em funkcj\u0119 wywo\u0142ywan\u0105 <code>the_title()<\/code>wewn\u0105trz p\u0119tli, kt\u00f3ra odzwierciedla tytu\u0142 posta. To tylko po to, \u017ceby zobaczy\u0107 p\u0119tl\u0119 w praktyce. Nie martw si\u0119, w <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-5-accessing-post-information\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nast\u0119pnym kroku<\/a> dowiemy si\u0119 wszystkiego o dost\u0119pie do wszystkich aktualnych informacji o wpisie.<\/p>\n<p>Zobaczmy teraz, co dzieje si\u0119 w WordPressie. Od\u015bwie\u017c stron\u0119 g\u0142\u00f3wn\u0105. W zale\u017cno\u015bci od ustawie\u0144 i zawarto\u015bci powiniene\u015b zobaczy\u0107 niekt\u00f3re tytu\u0142y. W moim WordPressie mam domy\u015blny post \u201eWitaj \u015bwiecie!&#8221; oraz kolejny wpis, kt\u00f3ry utworzy\u0142em zatytu\u0142owany \u201eTo kolejny post&#8221;. Oto, co dostaj\u0119 na pierwszej stronie:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151614-61e4cd1ab5812.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-151614-61e4cd1ab5812.png\" alt=\"Samouczek motywu WordPress dla pocz\u0105tkuj\u0105cych \u2013 cz\u0119\u015b\u0107 4: P\u0119tla postu\" ><\/a><\/p>\n<p>Je\u015bli spr\u00f3bujesz odwiedzi\u0107 stron\u0119 z pojedynczym postem, powiniene\u015b zobaczy\u0107 tylko jeden tytu\u0142, tytu\u0142 ogl\u0105danego posta. Mi\u0142y!<\/p>\n<h3>Dla ciekawskich\u2026<\/h3>\n<p>Je\u015bli jeste\u015b ciekawy, przez co przechodzi p\u0119tla i jakie parametry WordPress u\u017cywa\u0142 do tego zapytania, mo\u017cesz to sprawdzi\u0107. Zmienna globalna, do kt\u00f3rej odwo\u0142uje si\u0119 p\u0119tla, nazywa si\u0119 <code>$wp_query<\/code>. Musisz zdefiniowa\u0107 go globalnie, aby uzyska\u0107 do niego dost\u0119p. Spr\u00f3buj u\u017cy\u0107 <code>var_dump()<\/code>, aby wydrukowa\u0107 jego pe\u0142n\u0105 zawarto\u015b\u0107. P\u0119tla przechodzi przez <code>$wp_query-&gt;posts<\/code>w\u0142a\u015bciwo\u015b\u0107.<\/p>\n<pre><code>global $wp_query;\nvar_dump($wp_query);<\/code><\/pre>\n<p>Dodajmy jeden wa\u017cny szczeg\u00f3\u0142 do naszej p\u0119tli w <code>index.php<\/code>; spos\u00f3b, w jaki u\u017cytkownik mo\u017ce przej\u015b\u0107 do nast\u0119pnej i poprzedniej strony post\u00f3w.<\/p>\n<h2>Dodawanie nawigacji po p\u0119tli<\/h2>\n<p>Pami\u0119taj, \u017ce p\u0119tla pobierze liczb\u0119 post\u00f3w zdefiniowan\u0105 w ustawieniach WordPressa &gt; Czytanie, za ka\u017cdym razem, gdy znajdziesz si\u0119 na stronie, kt\u00f3ra pokazuje wiele post\u00f3w. Je\u015bli w p\u0119tli dost\u0119pnych jest wi\u0119cej post\u00f3w ni\u017c zdefiniowana tutaj liczba, potrzebujemy sposobu na poruszanie si\u0119 mi\u0119dzy stronami. Do tego mo\u017cemy u\u017cy\u0107 funkcji <code>the_posts_pagination()<\/code>.<\/p>\n<p>Ta funkcja akceptuje <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/the_posts_pagination\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">pewne parametry<\/a> w celu dostosowania swoich danych wyj\u015bciowych. Mo\u017cesz zdefiniowa\u0107 liczb\u0119 stron mi\u0119dzy elipsami (gdy stron jest du\u017co). Mo\u017cesz r\u00f3wnie\u017c okre\u015bli\u0107, jakie teksty powinny mie\u0107 linki \u201ePoprzednia&#8221; i \u201eNast\u0119pna&#8221; strony. Dodam go bez \u017cadnych parametr\u00f3w, aby wykona\u0107 ustawienia domy\u015blne, ale mo\u017cesz to dostosowa\u0107, je\u015bli chcesz.<\/p>\n<pre><code>...\n    while (have_posts()): the_post();\n        the_title();\n    endwhile;\n    the_posts_pagination();\n} else {\n...<\/code><\/pre>\n<p>Ta funkcja nie generuje absolutnie nic, je\u015bli liczba post\u00f3w na stronie jest mniejsza lub r\u00f3wna. Wi\u0119c nie martw si\u0119, je\u015bli uwa\u017casz, \u017ce si\u0119 pomyli\u0142e\u015b, poniewa\u017c nie widzisz \u017cadnych danych wyj\u015bciowych. Gdy na stronie jest wi\u0119cej post\u00f3w ni\u017c post\u00f3w, ta funkcja wy\u015bwietla div, nag\u0142\u00f3wek do czytnik\u00f3w ekranu (kt\u00f3re zwykle ukrywasz za pomoc\u0105 CSS) i pewn\u0105 liczb\u0119 link\u00f3w do stronicowania.<\/p>\n<p>Teraz, gdy wiemy, jak uzyska\u0107 dost\u0119p do ka\u017cdego posta, kt\u00f3ry znalaz\u0142 dla nas WordPress, nast\u0119pnym krokiem jest nauczenie si\u0119, jak pokaza\u0107, czego chcemy od ka\u017cdego postu; wewn\u0105trz p\u0119tli.<\/p>\n<h2>Dokumentacja dotycz\u0105ca zastosowanych metod<\/h2>\n<ul>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/have_posts\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">have_posts<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/the_post\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Poczta<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/the_title\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tytu\u0142<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/the_posts_pagination\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">the_post_pagination<\/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 motywu WordPress dla pocz\u0105tkuj\u0105cych om\u00f3wimy szczeg\u00f3\u0142owo p\u0119tl\u0119 post\u00f3w w WordPress; co to jest, jak dzia\u0142a i dlaczego go u\u017cywamy.<\/p>\n","protected":false},"author":1,"featured_media":223872,"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-233943","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\/233943","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=233943"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233943\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/223872"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=233943"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=233943"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=233943"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}