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