query_posts()

WordPress ループ で表示される投稿を変更するために使います。
私の場合、一番お世話になっているタグです。グローバル変数$wp_queryを書き換えてしまうので、ループの最後でリセットするのを忘れずに。
リセットをしないと、あとに続くループの挙動がおかしくなります。

※query_posts() 関数はメインの WordPress ループだけを変更するためのものです。新たなループを作るためのものではありません。メインループの他にループが必要な場合は、get_posts() を使ってください。

意外な感じがするのですが(私だけかも?)、query_posts()で固定ページもひっぱれます

位置

ループの前

引数

普段あまり使わないけれど便利なものだけピックアップします!

  • post_status…ステータス・公開状態で引っ張れます。
    例)post_status=private
    …非公開記事

その他はCodexへどうぞ。

コード記述例

基本の記述

<?php query_posts('引数'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
//ここに表示したい内容を入れる
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>

 

 

投稿のカテゴリースラッグがaaaの記事を表示する

<?php query_posts('category_name=aaa'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
//ここに表示したい内容を入れる
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>

 

 

投稿のカテゴリースラッグがaaaまたはbbbまたはcccのとき、999個まで記事を表示する

<?php query_posts($query_string . "cat=" .(get_category_by_slug('aaa')->term_id .",".get_category_by_slug('bbb')->term_id .",".get_category_by_slug('ccc')->term_id) . "&showposts=999"); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
//ここに表示したい内容を入れる
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>

 

 

固定ページをだす

<?php query_posts('post_type=page'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
//ここに表示したい内容を入れる
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>

 

 

固定ページでページング

<ul>
<?php
global $paged;
query_posts('category_name=example&showposts=3&paged=' . $paged); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; endif; ?>
<?php posts_nav_link(' | ','前の記事','次の記事'); ?>
<?php wp_reset_query(); ?>
</ul>

 

 

カスタム投稿タイプ「aaa」または「bbb」でカスタムフィールドのKeyが「xyz」の記事を表示

<?php
$args = array(
'post_type' =&gt; array('aaa','bbb'),
'meta_key' =&gt; 'xyz',
);
query_posts($args); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
//ここに表示したい内容を入れる
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?>

コメントを残す

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