忘れないように記録しとこ

get_postsで「下書き保存」の記事も取得する

概要

get_posts() を使って下書き保存状態の記事を取得する。

環境

WordPress バージョン 4.3

理由

get_posts()はデフォルトの状態だとステータスが公開状態のものしか取得できません。
DBのデータで言うと「post_status」カラムの値が「publish」になってるものが対象です。

しかし、今回は値が「draft」のものも取得したい!
というわけで力技が入っていますが、以下のように設定。

設定

//力技の設定
function custom_status ($where)
{
  $prefix = 'wp_';// wp-confing.phpの$table_prefixを参照
  $where = str_replace("AND (({$prefix}posts.post_status = 'publish'))", "AND (({$prefix}posts.post_status != 'inherit'))", $where);
  return $where;
}

add_action('posts_where', 'custom_status');// 設定の呼び出し

$arr = array(
  'suppress_filters' => false // フックの許可。この設定は必須!
);

if( $posts = get_posts( $arr ) )
{
  print_r($posts); 
}

 

最後にひとこと

力技の作業なので、Wordpressのバージョンに依存してしまう可能性があります。
もっといい方法は、ないものでしょうか・・・

 

この記事が気に入ったら
いいね ! しよう

Twitter で

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.