{"id":231536,"date":"2023-01-07T17:48:00","date_gmt":"2023-01-07T14:48:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231536"},"modified":"2023-01-07T17:48:26","modified_gmt":"2023-01-07T14:48:26","slug":"programmatiskt-soek-wordpress-inlaegg-efter-datumintervall","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/programmatiskt-soek-wordpress-inlaegg-efter-datumintervall\/","title":{"rendered":"Programmatiskt s\u00f6k WordPress-inl\u00e4gg efter datumintervall"},"content":{"rendered":"<p><strong>TL;DR:<\/strong> Koden som delas i det h\u00e4r inl\u00e4gget visar hur du kan \u00e4ndra fr\u00e5gan som k\u00f6rs p\u00e5 sidan <strong>Alla inl\u00e4gg<\/strong> s\u00e5 att du kan begr\u00e4nsa hur du s\u00f6ker efter inl\u00e4gg till ett angivet datumintervall.<\/p>\n<p>Det har g\u00e5tt ett tag sedan <a href=\"https:\/\/wordpress.mediadoma.com\/sv\/soek-inlaeggsmetadata-i-wordpress-admin-area\/\" title=\"jag senast skrev\">jag senast skrev<\/a> om att anv\u00e4nda <code>post_where<\/code>filtret f\u00f6r att \u00e4ndra s\u00f6kfr\u00e5gan som k\u00f6rs p\u00e5 en given sida, till exempel omr\u00e5det <strong>Alla inl\u00e4gg<\/strong> i WordPress. Men med tanke p\u00e5 att det finns en m\u00e4ngd olika anv\u00e4ndningsomr\u00e5den f\u00f6r att h\u00e4mta inl\u00e4gg \u2013 och anpassade inl\u00e4ggstyper \u2013 p\u00e5 olika s\u00e4tt, finns det en m\u00e4ngd olika s\u00e4tt att anv\u00e4nda detta enda filter.<\/p>\n<h2>S\u00f6k inl\u00e4gg efter datumintervall<\/h2>\n<p>F\u00f6r att kunna s\u00f6ka efter inl\u00e4gg efter datumintervall, h\u00e4r \u00e4r vad som m\u00e5ste h\u00e4nda:<\/p>\n<ol>\n<li>Registrera en \u00e5teruppringning med <code>posts_where<\/code>filtret,<\/li>\n<li>Se till att funktionen accepterar str\u00e4ngen f\u00f6r <code>where<\/code>och instansen av <code>WP_Query<\/code>den som k\u00f6rs p\u00e5 sidan<\/li>\n<li>F\u00e5 dagens datum och tid och datum och tid f\u00f6r fyra veckor sedan<\/li>\n<li>L\u00e4gg till <code>where<\/code>satsen f\u00f6r att begr\u00e4nsa resultaten till datumet<\/li>\n<li><code>return<\/code>den uppdaterade fr\u00e5gan.<\/li>\n<\/ol>\n<pre><code>&lt;?php\nadd_filter( \n  'posts_where',\n  function (string $where, WP_Query $query ): string {\n    global $wpdb;\n\n    $todays_date   = gmdate( 'Y-m-d H:i:s', strtotime( 'now') );\n    $four_weeks_ago = gmdate( 'Y-m-d H:i:s', strtotime( '-4 weeks') );\n\n    $prepend = $wpdb-&gt;prepare(\n      \" AND {$wpdb-&gt;posts}.post_date &gt; %s\",\n      $four_weeks_ago\n    );\n\n    $prepend .= $wpdb-&gt;prepare(\n      \" AND {$wpdb-&gt;posts}.post_date &lt; %s\",\n      $todays_date\n    );\n\n    return $prepend. $where;\n  }, 101, 2\n);<\/code><\/pre>\n<p>Resultatet av den h\u00e4r funktionen \u00e4r en modifierad fr\u00e5ga som begr\u00e4nsar de inl\u00e4gg som returneras till det angivna datumet och tiden. N\u00e4mligen fyra veckor sedan upp till timme, minut och sekund.<\/p>\n<p>Du kan \u00e4ndra detta genom att uppdatera <code>-4 weeks<\/code>str\u00e4ngen som skickas till <code>strtotime<\/code>funktionen (men jag rekommenderar att du g\u00e5r igenom PHP-manualsidan som l\u00e4nkas nedan f\u00f6r att f\u00f6rst\u00e5 hur den h\u00e4r funktionen fungerar med spr\u00e5k som detta).<\/p>\n<h2>Referenser<\/h2>\n<ul>\n<li><code>[posts_where](https:\/\/developer.wordpress.org\/reference\/hooks\/posts_where\/)<\/code><\/li>\n<li><code>[WP_Query](https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/)<\/code><\/li>\n<li><code>[wpdb](https:\/\/developer.wordpress.org\/reference\/classes\/wpdb\/)<\/code><\/li>\n<li><code>[gmdate](https:\/\/www.php.net\/manual\/en\/function.gmdate.php)<\/code><\/li>\n<li><code>[strtotime](https:\/\/www.php.net\/manual\/en\/function.strtotime.php)<\/code><\/li>\n<\/ul>\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>Koden som delas i det h\u00e4r inl\u00e4gget visar hur du kan s\u00f6ka efter inl\u00e4gg efter datumintervall p\u00e5 sidan Alla inl\u00e4gg.<\/p>\n","protected":false},"author":1,"featured_media":158377,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[838,848,901,807,724,868],"tags":[1173],"class_list":["post-231536","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide-foer-nyboerjare","category-handledningar","category-koda","category-php-9","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231536","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=231536"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231536\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/158377"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=231536"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=231536"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=231536"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}