{"id":232286,"date":"2023-01-07T17:49:00","date_gmt":"2023-01-07T14:49:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232286"},"modified":"2023-01-07T17:50:48","modified_gmt":"2023-01-07T14:50:48","slug":"cerca-in-modo-programmatico-i-post-di-wordpress-per-intervallo-di-date","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/cerca-in-modo-programmatico-i-post-di-wordpress-per-intervallo-di-date\/","title":{"rendered":"Cerca in modo programmatico i post di WordPress per intervallo di date"},"content":{"rendered":"<p><strong>TL; DR:<\/strong> Il codice condiviso in questo post mostra come puoi modificare la query che viene eseguita nella pagina <strong>Tutti i post<\/strong> in modo da poter limitare il modo in cui cerchi i post a un intervallo di date specificato.<\/p>\n<p>\u00c8 passato un po&#8217; di tempo dall&#8217;ultima <a href=\"https:\/\/wordpress.mediadoma.com\/it\/cerca-i-metadati-dei-post-nellarea-di-amministrazione-di-wordpress\/\" title=\"volta che ho scritto\">volta che ho scritto<\/a> sull&#8217;utilizzo del <code>post_where<\/code>filtro per modificare la query di ricerca che viene eseguita su una determinata pagina, come l&#8217; area <strong>Tutti i post<\/strong> di WordPress. Ma dato il fatto che ci sono una variet\u00e0 di usi per recuperare i post &#8211; e tipi di post personalizzati &#8211; in modi diversi, c&#8217;\u00e8 una variet\u00e0 di modi per usare questo filtro singolo.<\/p>\n<h2>Cerca post per intervallo di date<\/h2>\n<p>Per cercare i post per intervallo di date, ecco cosa deve succedere:<\/p>\n<ol>\n<li>Registra una richiamata con il <code>posts_where<\/code>filtro,<\/li>\n<li>Assicurati che la funzione accetti la stringa <code>where<\/code>e l&#8217;istanza <code>WP_Query<\/code>in esecuzione sulla pagina<\/li>\n<li>Ottieni la data e l&#8217;ora di oggi e la data e l&#8217;ora di quattro settimane fa<\/li>\n<li>Anteponi la <code>where<\/code>clausola per vincolare i risultati alla data<\/li>\n<li><code>return<\/code>la query aggiornata.<\/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>Il risultato di questa funzione \u00e8 una query modificata che limita i post restituiti entro la data e l&#8217;ora specificate. Vale a dire, quattro settimane fa fino all&#8217;ora, minuto e secondo.<\/p>\n<p>Puoi cambiarlo aggiornando la <code>-4 weeks<\/code>stringa passata alla <code>strtotime<\/code>funzione (ma ti consiglio di rivedere la pagina di manuale PHP collegata di seguito per capire come funziona questa funzione con un linguaggio come questo).<\/p>\n<h2>Riferimenti<\/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 di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il codice condiviso in questo post mostra come puoi cercare i post per intervallo di date nella pagina Tutti i post.<\/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":[896,835,804,720,844,865],"tags":[1168],"class_list":["post-232286","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-guida-per-principianti","category-php-6","category-sviluppatore","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/232286","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=232286"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/232286\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/158377"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=232286"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=232286"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=232286"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}