get_posts()とWP_Queryの違いというか・・・

これは色々なところで記されているので繰り返さない。

たとえば、以下のサイト

http://yuji-okayama-designersworks.com/wordpress/596/

実際に持っている機能としては、両者とも大差はない。ただ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なので、そのままでは固定ページの情報を取ることは出来ない。

この事でたまに軽く混乱する事もあるので、メモ。

 

コメントを残す

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