{"id":230899,"date":"2022-12-22T17:51:00","date_gmt":"2022-12-22T14:51:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230899"},"modified":"2022-12-07T10:46:09","modified_gmt":"2022-12-07T07:46:09","slug":"wordpress-anpassad-inlaeggstyp-paginering","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/wordpress-anpassad-inlaeggstyp-paginering\/","title":{"rendered":"WordPress anpassad inl\u00e4ggstyp paginering"},"content":{"rendered":"<p>Generellt sett, n\u00e4r jag arbetar med anpassad posttyppaginering, g\u00f6rs det genom att skriva en anpassad fr\u00e5ga med <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP_Query<\/a> och sedan anropa <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_reset_postdata\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_reset_postdata()<\/a> i slutet av <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>Jag tror fortfarande att detta har sin plats, men det finns en enklare l\u00f6sning som du kanske kan implementera med hj\u00e4lp av en specifik krok som WordPress tillhandah\u00e5ller.<\/p>\n<p>Specifikt pratar jag om <a href=\"https:\/\/developer.wordpress.org\/reference\/hooks\/pre_get_posts\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">pre_get_posts-<\/a> kroken. I kodreferensen kan du se att detta definieras som:<\/p>\n<blockquote>\n<p>Utl\u00f6ses efter att fr\u00e5gevariabelobjektet har skapats, men innan den faktiska fr\u00e5gan k\u00f6rs.<\/p>\n<\/blockquote>\n<p>Och eftersom fr\u00e5gan inneh\u00e5ller mycket information kan vi g\u00e5 vidare och anv\u00e4nda den f\u00f6r att avg\u00f6ra om vi vill modifiera de n\u00f6dv\u00e4ndiga argumenten f\u00f6r att hantera sidnumrering.<\/p>\n<p>Med detta menar jag att vi m\u00e5ste titta p\u00e5 egenskapen <strong>post_type<\/strong> och <strong>posts_per_page-<\/strong> v\u00e4rdet. F\u00f6r att g\u00f6ra detta kan du implementera det p\u00e5 <a href=\"https:\/\/gist.github.com\/tommcfarlin\/1e69ad55ecdb13424a66253c7d7aa4df#file-00-pre-get-posts-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">f\u00f6ljande s\u00e4tt<\/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>Koden ovan \u00e4r inte objektorienterad (om det vore s\u00e5 skulle jag st\u00e4lla in en prenumerant och en klass som ansvarar f\u00f6r att hantera logiken i funktionen), men du kan se hur du st\u00e4ller in den i sin mest grundl\u00e4ggande form.<\/p>\n<p>S\u00e5 om du arbetar med anpassad posttyp paginering och inte vill ta itu med de olika aspekterna av att st\u00e4lla in en anpassad fr\u00e5ga, kan detta l\u00f6sa ditt problem.<\/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>Om du arbetar med anpassad inl\u00e4ggstyppaginering och inte vill ta itu med en anpassad fr\u00e5ga kan detta fungera.<\/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":[838,901,724,868],"tags":[1173],"class_list":["post-230899","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide-foer-nyboerjare","category-koda","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230899","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=230899"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230899\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/235807"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=230899"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=230899"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=230899"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}