WP クエリの仕組み
$wp_query
グローバル変数。リクエストの情報を与えることで、データベースから情報を取得する。
リクエストというのは、大体はURLということだと思う。
ーーー
query_posts と get_posts の違い
get_posts() は、データを取得するだけ。query_posts() は、グローバル変数 $wp_query を変更する。
使ったあとに、これで元に戻してあげる必要がある。
wp_reset_query();
ーーー
have_posts()
現在の WordPress クエリにループできる結果があるかどうかをチェックする。
new WP_Query()
これで、たぶん
—
$the_query = get_posts(
array( ‘category__and’ => $category_array_notempty, ‘numberposts’ => 20, ‘s’ => $search_str, ‘paged’ => $paged )
);
get_post にパラメータを私て、$the_queryを作る。
pagedはURLに含まれているので、何もしなくても取れる。
—
$the_query = new WP_Query( $args );
WP_Queryは、記事を取得するためのクラス。
get_postsはWP_Queryクラスを利用して記事を取得する。テンプレートタグ。
どちらもメインループには影響を与えない。
WP_Queryの場合
$args = array( ‘post_type’ => ‘post’ );
$the_query = new WP_Query( $args );
while ( $the_query->have_posts() ) : $the_query->the_post();
the_title();
endwhile;
wp_reset_postdata();
have_posts():投稿があることを確認する
the_post():$postの中身を書き換える。
$postを書き換えることで、the_title()などを使って投稿の情報を取り出すことができる。
$postはグローバル変数なので、書き換えた後でresetを忘れないように。
$postを書き換えるのは、投稿の情報を取得するための関数を共通化する(使い回す)ためなんだと思う。
—
–
<?php $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 ); ?>