WP_Query, query_posts() get_posts()、なんか色々あるけどどう違うの?どれを使えばいいの?というよくある疑問です。
どれを使えばいいの?
get_posets()か、WP_Queryからnewして下さい。query_posts()はテーマ開発者など、よその人使うために用意された関数ではないです。query_posts()絶対に使わないで下さい。
get_posts()のケース
投稿のフィールドへのアクセス方法が幾つかあります、どれでも好きなやり方をして下さい。
$my_posts = get_posts( $arg );
foreach ( $my_posts as $p ) {
// 1) プレーンで表示
echo $p->post_content;
// 2) the_contentのように、フィルターをかませてから表示
echo apply_filter( 'the_content', $p->post_content );
// 3) もしくは
setup_post_data( $p );
the_content();
}
WP_Query()のケース
もしQuery オブジェクトなら、いつものメインループと似ていて、気もちがいいです。
$my_query = new WP_Query( $arg );
while ( $my_query->have_posts() ) {
$my_query->the_posts();
the_content();
}
どちらも、あとで、メインクエリの投稿を参照したければ、wp_reset_postdata()を実行するのを忘れずに。
2つの方法がありますが、私はウィジェットなど、規模の小さいときはget_posts、もうすこし規模の大きい投稿を表示するときは、WP_Queryを使います。後者の方が、いつも必ず同じ書き方ができるのでコードが読みやすくはなります。
参考