{"id":230857,"date":"2022-12-22T17:51:00","date_gmt":"2022-12-22T14:51:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230857"},"modified":"2022-12-07T10:46:07","modified_gmt":"2022-12-07T07:46:07","slug":"paginacja-typu-niestandardowego-posta-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/paginacja-typu-niestandardowego-posta-wordpress\/","title":{"rendered":"Paginacja typu niestandardowego posta WordPress"},"content":{"rendered":"<p>Og\u00f3lnie rzecz bior\u0105c, za ka\u017cdym razem, gdy pracuj\u0119 z niestandardowym paginacj\u0105 typu post, robi\u0119 to, pisz\u0105c niestandardowe zapytanie za pomoc\u0105 <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_Query<\/a>, a nast\u0119pnie wywo\u0142uj\u0105c <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_reset_postdata\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_reset_postdata()<\/a> na ko\u0144cu <a href=\"https:\/\/developer.wordpress.org\/themes\/basics\/the-loop\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">The Loop<\/a>.<\/p>\n<p>Nadal uwa\u017cam, \u017ce to ma swoje miejsce, ale istnieje prostsze rozwi\u0105zanie, kt\u00f3re mo\u017cesz wdro\u017cy\u0107 za pomoc\u0105 konkretnego haka, kt\u00f3ry zapewnia WordPress.<\/p>\n<p>W szczeg\u00f3lno\u015bci m\u00f3wi\u0119 o haczyku <a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/pre_get_posts\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">pre_get_posts<\/a>. W Odniesieniu do kodu mo\u017cna zobaczy\u0107, \u017ce jest to zdefiniowane jako:<\/p>\n<blockquote>\n<p>Po\u017cary po utworzeniu obiektu zmiennej zapytania, ale przed faktycznym uruchomieniem zapytania.<\/p>\n<\/blockquote>\n<p>A poniewa\u017c zapytanie zawiera du\u017co informacji, mo\u017cemy \u015bmia\u0142o u\u017cy\u0107 ich do okre\u015blenia, czy chcemy zmodyfikowa\u0107 niezb\u0119dne argumenty, aby poradzi\u0107 sobie z paginacj\u0105.<\/p>\n<p>Rozumiem przez to, \u017ce musimy spojrze\u0107 na w\u0142a\u015bciwo\u015b\u0107 <strong>post_type<\/strong> i warto\u015b\u0107 <strong>posts_per_page<\/strong>. W tym celu mo\u017cesz zaimplementowa\u0107 go w <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1e69ad55ecdb13424a66253c7d7aa4df#file-00-pre-get-posts-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nast\u0119puj\u0105cy spos\u00f3b<\/a> :<\/p>\n<pre><code>&lt;?php\n\nuse WP_Query;\n\nadd_action('pre_get_posts', __NAMESPACE__. 'customPostTypePagination');\n\/**\n * If we're on the 'acme-post-type' page, then adjusts pagination so there are only two posts per page. This will \n * affect pagination so we can use built-in pagination links to easily page through the content.\n *\n * @param WP_Query the instance of the query object that contains information to populate the template.\n *\n * @return WP_Query an unmodified version of the query object or a modified version if we're on the acme post-type.\n *\/\nfunction customPostTypePagination(WP_Query $query)\n{\n  if (isset($query-&gt;query['post_type']) &amp;&amp; 'acme-post-type' == $query-&gt;query['post_type']) {\n    $query-&gt;set('posts_per_page', 2);\n  }\n}<\/code><\/pre>\n<p>Powy\u017cszy kod nie jest zorientowany obiektowo (gdyby tak by\u0142o, ustawi\u0142bym subskrybenta i klas\u0119 odpowiedzialn\u0105 za obs\u0142ug\u0119 logiki w funkcji), ale mo\u017cesz zobaczy\u0107, jak to ustawi\u0107 w najbardziej podstawowej formie.<\/p>\n<p>Je\u015bli wi\u0119c pracujesz z niestandardow\u0105 paginacj\u0105 typu post\u00f3w i nie chcesz zajmowa\u0107 si\u0119 r\u00f3\u017cnymi aspektami konfigurowania niestandardowego zapytania, mo\u017ce to rozwi\u0105za\u0107 Tw\u00f3j problem.<\/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>Je\u015bli pracujesz z niestandardow\u0105 paginacj\u0105 typu post\u00f3w i nie chcesz zajmowa\u0107 si\u0119 niestandardowym zapytaniem, mo\u017ce to zadzia\u0142a\u0107.<\/p>\n","protected":false},"author":1,"featured_media":235807,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,897,836,866],"tags":[1169],"class_list":["post-230857","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","category-przewodnik-dla-poczatkujacych","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230857","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=230857"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/230857\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/235807"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=230857"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=230857"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=230857"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}