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を使います。後者の方が、いつも必ず同じ書き方ができるのでコードが読みやすくはなります。
参考