これは色々なところで記されているので繰り返さない。
たとえば、以下のサイト
実際に持っている機能としては、両者とも大差はない。ただget_posts()はWP_Queryをラップしているものの、WP_Queryの持っている全データにアクセス出来ないようだ。
ちょっとハッとさせられたのは、get_posts()はデフォルトを持っているという事だ。ラップ関数であるget_posts()は、WP_Queryをより手軽に使えるように、投稿タイプやページ送りなどのパラメータがあらかじめ与えられている。
$args = array(
'posts_per_page' => 5,
'offset' => 0,
'category' => '',
'category_name' => '',
'orderby' => 'date',
'order' => 'DESC',
'include' => '',
'exclude' => '',
'meta_key' => '',
'meta_value' => '',
'post_type' => 'post',
'post_mime_type' => '',
'post_parent' => '',
'author' => '',
'post_status' => 'publish',
'suppress_filters' => true
);
$posts_array = get_posts( $args );
つまり、両者に同じパラメータを与えても同じ結果にならない場合がある、ということ。たとえば、get_postsではデフォルトで投稿タイプがpostなので、そのままでは固定ページの情報を取ることは出来ない。
この事でたまに軽く混乱する事もあるので、メモ。
コメント