目次
概要
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のバージョンに依存してしまう可能性があります。
もっといい方法は、ないものでしょうか・・・