{"id":231443,"date":"2023-01-07T16:54:00","date_gmt":"2023-01-07T13:54:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231443"},"modified":"2023-01-07T16:55:47","modified_gmt":"2023-01-07T13:55:47","slug":"programowo-przeszukuj-posty-wordpress-wedlug-zakresu-dat","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/programowo-przeszukuj-posty-wordpress-wedlug-zakresu-dat\/","title":{"rendered":"Programowo przeszukuj posty WordPress wed\u0142ug zakresu dat"},"content":{"rendered":"<p><strong>TL; DR:<\/strong> Kod udost\u0119pniony w tym po\u015bcie pokazuje, jak zmodyfikowa\u0107 zapytanie uruchamiane na stronie <strong>Wszystkie posty<\/strong>, aby ograniczy\u0107 spos\u00f3b wyszukiwania post\u00f3w do okre\u015blonego zakresu dat.<\/p>\n<p>Min\u0119\u0142o troch\u0119 czasu, odk\u0105d <a href=\"https:\/\/wordpress.mediadoma.com\/pl\/wyszukaj-metadane-postow-w-obszarze-administracyjnym-wordpress\/\" title=\"ostatnio pisa\u0142em\">ostatnio pisa\u0142em<\/a> o u\u017cywaniu <code>post_where<\/code>filtra do modyfikowania zapytania wyszukiwania, kt\u00f3re dzia\u0142a na danej stronie, na przyk\u0142ad w obszarze <strong>Wszystkie posty<\/strong> w WordPressie. Ale bior\u0105c pod uwag\u0119 fakt, \u017ce istnieje wiele zastosowa\u0144 do pobierania post\u00f3w \u2013 i niestandardowych typ\u00f3w post\u00f3w \u2013 na r\u00f3\u017cne sposoby, istnieje wiele sposob\u00f3w u\u017cycia tego pojedynczego filtra.<\/p>\n<h2>Szukaj post\u00f3w wed\u0142ug zakresu dat<\/h2>\n<p>Aby wyszukiwa\u0107 posty wed\u0142ug zakresu dat, nale\u017cy wykona\u0107 nast\u0119puj\u0105ce czynno\u015bci:<\/p>\n<ol>\n<li>Zarejestruj oddzwonienie z <code>posts_where<\/code>filtrem,<\/li>\n<li>Upewnij si\u0119, \u017ce funkcja akceptuje ci\u0105g znak\u00f3w <code>where<\/code>i instancj\u0119 <code>WP_Query<\/code>, kt\u00f3ra jest uruchomiona na stronie<\/li>\n<li>Pobierz dzisiejsz\u0105 dat\u0119 i godzin\u0119 oraz dat\u0119 i godzin\u0119 sprzed czterech tygodni<\/li>\n<li>Do\u0142\u0105cz <code>where<\/code>klauzul\u0119, aby ograniczy\u0107 wyniki do daty<\/li>\n<li><code>return<\/code>zaktualizowane zapytanie.<\/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>Wynikiem tej funkcji jest zmodyfikowane zapytanie, kt\u00f3re ogranicza posty zwracane do okre\u015blonej daty i godziny. Mianowicie cztery tygodnie temu do godziny, minuty i sekundy.<\/p>\n<p>Mo\u017cesz to zmieni\u0107, aktualizuj\u0105c <code>-4 weeks<\/code>ci\u0105g znak\u00f3w przekazany do <code>strtotime<\/code>funkcji (ale polecam przejrzenie strony podr\u0119cznika PHP, do kt\u00f3rej link znajduje si\u0119 poni\u017cej, aby zrozumie\u0107, jak ta funkcja dzia\u0142a w takim j\u0119zyku).<\/p>\n<h2>Bibliografia<\/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\">\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>Kod udost\u0119pniony w tym po\u015bcie pokazuje, jak mo\u017cesz wyszukiwa\u0107 posty wed\u0142ug zakresu dat na stronie Wszystkie posty.<\/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":[721,897,805,836,845,866],"tags":[1169],"class_list":["post-231443","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","category-php-7","category-przewodnik-dla-poczatkujacych","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/231443","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=231443"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/231443\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/158377"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=231443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=231443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=231443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}