WP:WordPress(ワードプレス)

WP(WordPress)

【WordPress】query_postsは非推奨です。WP_Queryかget_postsを使いましょう!

メインクエリを書き換えてしまうquery_postsは非推奨です!

 

query_posts()について

記事データを取得する際に、未だにquery_posts()を使ってループを回してませんか?

私、油断したら使ってしまっていることがあります。

この様な使い方をしますね。

<?php query_posts("post_type=post&posts_per_page=10&paged=" . $paged); ?>
<?php if(have_posts()) : ?>
<?php while(have_posts()): the_post(); ?>
<?php the_title(); ?>
<?php the_excerpt(); ?>


<?php endwhile; endif; ?>
<?php wp_reset_query(); ?> ← 忘れずに

で、今更なんですが、query_posts()は非推奨になっています。

理由は、
SQLクエリを再実行するので非効率
メインクエリを書き換えてしまう為に、ページングなど一部の処理で正常に動作しないことがある
の2点です。

それでは、"記事データを取得するには何を使えばいいの?"となりますが、
WP_Queryget_posts()を使用するようにして下さい。

query_posts()のようにメインクエリを書き換えずに、サブクエリを生成して取得するので、
現在は、いずれかを使用する方法が推奨されています。

 

WP_Queryとget_posts()

WP_Queryはクラスとして定義されており、オブジェクトとして生成されたデータを扱うのに対して、
get_posts()は関数として定義されていて、配列としてデータを扱います。

具体的には、以下のような使い方をします。

 

WP_Queryクラス

<?php $args = array("post_type" => "post", "posts_per_page" => 12, "paged" => $paged); ?>
<?php $the_query = new WP_Query($args); ?>
<?php if($the_query->have_posts()) : ?>
<?php while($the_query->have_posts()) : $the_query->the_post(); ?>
<?php the_title(); ?>
<?php the_excerpt(); ?>


<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); //リセット ?> ← 忘れずに

 

get_posts()

<?php $args = array("post_type" => "post", "posts_per_page" => 12); ?>
<?php $myposts = get_posts($args); ?>
<?php if($myposts): ?>
<?php foreach($myposts as $post) : setup_postdata($post); ?>
<?php the_title(); ?>
<?php the_excerpt(); ?>


<?php endforeach; ?>
<?php endif; ?>
<?php wp_reset_postdata(); //リセット ?> ← 忘れずに

 

WP_Queryクラスとget_posts() どちらを使えばいいの?

何をやるのかにもよりますが、記事データを取得して表示させたいだけであれば、
どちらでも問題ないです。

私はWP_Queryを使うことが多いですが、
get_posts()の方がループ処理を簡単に書けるので使い易いかと思います。

複雑な検索条件を設定する場合には、WP_Queryを使って下さい。

因みに、get_posts()もWP_Queryを呼び出して使っているようです。

WordPress短期学習プログラム

関連記事

  1. WP:WordPress(ワードプレス)

    WP(WordPress)

    選択したタクソノミーをカスタム投稿タイプの記事一覧に表示

    前回、「選択選択中のタクソノミーを管理画面の投稿一覧に表示」という記事…

  2. WP:WordPress(ワードプレス)

    WP(WordPress)

    zenbackをWordPressにインストール!!

    WordPressにzenbackをインストールしてみました。&n…

  3. WP:WordPress(ワードプレス)
  4. WP:WordPress(ワードプレス)

    WP(WordPress)

    WP アイキャッチ画像を管理画面の投稿一覧に表示

    前回の記事、アイキャッチ機能の追加の続きになるのですが、WordP…

  5. WP:WordPress(ワードプレス)

    WP(WordPress)

    さくらのレンタルサーバ 簡単SSL化プラグイン

    「さくらのレンタルサーバ 簡単SSL化プラグイン」というプラグ…

  6. The Thor(ザ・トール)

    WP(WordPress)

    THE THOR(ザ・トール)でカテゴリーページを活用しましょう

    【The Thor(ザ・トール)】カテゴリーページのカスタマイ…

最近の記事

  1. Technology-Connection-Net
  2. ドメインにハイフンを使うのは日本人だけ?
  3. SSL(HTTPS)
  4. ドメインについて
  5. WP:WordPress(ワードプレス)
  6. ドメイン(domain)
  7. JPドメイン
  8. 高速(スピード)
  9. ブログアクセス
  10. 高速(スピード)
PAGE TOP