{"id":232100,"date":"2023-01-07T17:20:00","date_gmt":"2023-01-07T14:20:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232100"},"modified":"2023-01-07T17:20:36","modified_gmt":"2023-01-07T14:20:36","slug":"pesquisar-programaticamente-postagens-do-wordpress-por-intervalo-de-datas","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/pesquisar-programaticamente-postagens-do-wordpress-por-intervalo-de-datas\/","title":{"rendered":"Pesquisar programaticamente postagens do WordPress por intervalo de datas"},"content":{"rendered":"<p><strong>TL;DR:<\/strong> O c\u00f3digo compartilhado nesta postagem mostra como voc\u00ea pode modificar a consulta executada na p\u00e1gina <strong>Todas as postagens<\/strong> para que voc\u00ea possa limitar a forma de pesquisa de postagens a um intervalo de datas especificado.<\/p>\n<p>J\u00e1 faz algum tempo desde a <a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/pesquisar-metadados-de-postagem-na-area-de-administracao-do-wordpress\/\" title=\"\u00faltima vez que escrevi\">\u00faltima vez que escrevi<\/a> sobre o uso do <code>post_where<\/code>filtro para modificar a consulta de pesquisa que \u00e9 executada em uma determinada p\u00e1gina, como a \u00e1rea <strong>All Posts<\/strong> do WordPress. Mas, dado o fato de que h\u00e1 uma variedade de usos para recuperar postagens \u2013 e tipos de postagem personalizados \u2013 de diferentes maneiras, h\u00e1 v\u00e1rias maneiras de usar esse \u00fanico filtro.<\/p>\n<h2>Pesquisar postagens por per\u00edodo<\/h2>\n<p>Para pesquisar postagens por per\u00edodo, veja o que precisa acontecer:<\/p>\n<ol>\n<li>Registre um retorno de chamada com o <code>posts_where<\/code>filtro,<\/li>\n<li>Verifique se a fun\u00e7\u00e3o aceita a string <code>where<\/code>e a inst\u00e2ncia <code>WP_Query<\/code>que est\u00e1 sendo executada na p\u00e1gina<\/li>\n<li>Obtenha a data e hora de hoje e a data e hora de quatro semanas atr\u00e1s<\/li>\n<li>Anexe a <code>where<\/code>cl\u00e1usula para restringir os resultados \u00e0 data<\/li>\n<li><code>return<\/code>a consulta atualizada.<\/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>O resultado dessa fun\u00e7\u00e3o \u00e9 uma consulta modificada que restringe as postagens que s\u00e3o retornadas na data e hora especificadas. Ou seja, quatro semanas atr\u00e1s at\u00e9 a hora, minuto e segundo.<\/p>\n<p>Voc\u00ea pode alterar isso atualizando a <code>-4 weeks<\/code>string passada para a <code>strtotime<\/code>fun\u00e7\u00e3o (mas eu recomendo revisar a p\u00e1gina de manual do PHP vinculada abaixo para entender como essa fun\u00e7\u00e3o funciona com uma linguagem como esta).<\/p>\n<h2>Refer\u00eancias<\/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\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O c\u00f3digo compartilhado nesta postagem mostra como voc\u00ea pode pesquisar postagens por intervalo de datas na p\u00e1gina Todas as postagens.<\/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":[898,722,837,806,846,867],"tags":[1170],"class_list":["post-232100","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-desenvolvedor","category-guia-para-iniciantes","category-php-8","category-tutoriais","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/232100","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=232100"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/232100\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/158377"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=232100"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=232100"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=232100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}