2017-03-09 50 views
1

我需要提取wordpress中最近6個月至今天發佈的所有帖子。獲取日期之間的帖子

我使用WP_Query要做到這一點,

$today  = new \DateTime(); 
    $prev  = new \DateTime(); 
    $interval = new \DateInterval('P6M'); 

    $prev->sub($interval); 

    $args = [ 
     'post_type'  => 'post', 
     'date_query' => [ 
      [ 
       'before' => $today->format('Y-m-d H:i:s'), 
       'after'  => $prev->format('Y-m-d H:i:s'), 
       'inclusive' => true 
      ] 
     ] 
    ]; 
echo '[POST] Today: ' . $today->format('Y-m-d') . "\n"; 
echo "[POST] Count:" . $wpQuery->post_count . "\n"; 
echo '[POST] Start date: ' . $prev->format('Y-m-d') . "\n"; 

輸出

Today: 2017-03-09 
Count: 7 
Start date: 2016-09-09 

如果我在WordPress數據庫中的選擇,在同爲日期,我得到2086行。

SELECT COUNT(ID) 
    -> FROM wp_posts 
    -> WHERE DATE(post_date) >= '2016-09-09' AND DATE(post_date) < '2017-03-09' 
    -> AND post_type = 'post'; 

SQL輸出

+-----------+ 
| count(ID) | 
+-----------+ 
|  2086 | 
+-----------+ 

我在做什麼毛病WP_Query?爲什麼我會得到兩個不同的結果?

謝謝。

+0

SELECT COUNT(ID),其中POST_DATE BETWEEN(「2016- 09-09 00:00:00'AND'2017-09-10 00:00:00')AND post_type ='post'; – user1544541

+0

@ user1544541您的查詢爲我提供了WordPress內的所有帖子。 –

+0

SELECT count(*)FROM wp_posts WHERE post_date BETWEEN('2016-09-09 00:00:00'AND'2017-09-10 00:00:00')AND post_type ='post'; – user1544541

回答

1
  1. 在SQL查詢,你設定發佈日期比2017年3月9日DATE(post_date) < '2017-03-09'較小,但在WP_Query與'inclusive' => true是小於或等於2017年3月9日DATE(post_date) <= '2017-03-09'

  2. 您可以打印WP_Query生成的SQL查詢是這樣的:

    echo $wpQuery->request; 
    
  3. 嘗試:從wp_posts

    SELECT COUNT(ID) FROM wp_posts WHERE wp_posts.post_date >= '2016-09-09 15:19:39' AND wp_posts.post_date <= '2017-03-09 16:19:39' AND wp_posts.post_type = 'post' AND wp_posts.post_status = 'publish' 
    
0
SELECT COUNT(ID) 
FROM wp_posts 
WHERE DATE(post_date) >= '2016-09-09' AND DATE(post_date) < '2017-09-09' 
    AND post_type = 'post'; 
+0

我得到了相同的結果 –

+0

dataType for Post_date? – Naincy

+0

我認爲這是一個時間表''2017-02-02 09:39:55' –

相關問題