筆記 WP_Query 撈取 post 會重複的問題

WordPress 有一個非常好用的 function 叫做 WP_Query 它可以幫助我們撈取想要的資料。

今日遇到一個狀況,使用 WP_Query 撈取 post 時發現會有重複出現的資料,所以特別紀錄一下使用情境。

$arg = array(
      'post_type' => 'post',
      'orderby' => 'date',
      'order' => 'DESC',
      'post_status' => 'publish',
    );

$the_query = new WP_Query($arg);

簡單地闡述一下上面的程式碼,不難看的出來我要撈取 post 按照 發佈時間 由 新到舊排序
重點是 'post_status' => 'publish' 這行,如果不給就會是預設值。

post_status (string / array) – use post status. Retrieves posts by Post Status. Default value is ‘publish’, but if the user is logged in, ‘private’ is added. Public custom statuses are also included by default. And if the query is run in an admin context (administration area or AJAX call), protected statuses are added too. By default protected statuses are ‘future’, ‘draft’ and ‘pending’.

預設值是 publish 沒錯 可是如果是以 admin context 去撈取資料,狀態為 protected 的 post 也會被撈出來,也就是 ‘future’,’draft’,’pending’

所以才會有多筆重複資料的問題,藉此筆記起來。