query_posts()を利用して記事表示方法の幅を広げる

query_posts()はWordPressが投稿を表示するのに使用しているメインクエリーを置き換える手段。
記述箇所は、記事表示のループの直前に記述する。
これはメインクエリーを一旦横に置いておき、新しいクエリーで上書きする。
query_postsを使用する際は、クエリーの改変を戻すために、wp_reset_query()を呼び出し、オリジナルのメインクエリーを復活させる

※注意点
query_postsを使うことによって、ページ上のメインクエリーが置き換えられ、ページの読み込み速度に影響を与える。
最悪の場合、倍かそれ以上の処理が発生する。
簡単に使える代わりに、この関数は混乱と問題を引き起こす傾向がある。

テンプレートタグ/query posts - WordPress Codex 日本語版
tesut

使用例(1)最新記事を10件から5件表示に変更する場合

たとえば、ホームで、通常最新の10件の投稿が表示されている。
もし5件だけ表示したいのであれば、query_posts()を使ってこのように書くことができる。

使用例(1)サンプルコード

<?php

// クエリ
query_posts( 'posts_per_page=5' );

// 記事表示のループ
if ( have_posts() ) : 
  while ( have_posts() ) : the_post();
?>

	<!-- 記事タイトルを表示するテンプレタグ -->
	<h2><?php the_title(); ?></2>
	<!-- 記事の投稿日時を出力するテンプレタグ -->
	投稿日時:<?php the_time(); ?>

<?php
  endwhile; 
else:
endif;

// クエリをリセット
wp_reset_query();
?>

使用例(2)指定カテゴリーのみ5件表示に変更する場合

query_posts()の引数の部分にパラメータを追加する事で、指定したカテゴリーの記事内容のみを出力できる。
パラーメータを連結する記号は「&」
たとえば、表示したい指定カテゴリー番号が「10」の場合、cat=10を連結させる。

※カテゴリー番号の確認方法
sagagaga33

使用例(2)サンプルコード

<?php

// クエリ
query_posts( 'posts_per_page=5&cat=10' );

// 記事表示のループ
if ( have_posts() ) : 
  while ( have_posts() ) : the_post();
?>

	<!-- 記事タイトルを表示するテンプレタグ -->
	<h2><?php the_title(); ?></2>
	<!-- 記事の投稿日時を出力するテンプレタグ -->
	投稿日時:<?php the_time(); ?>

<?php
  endwhile; 
else:
endif;

// クエリをリセット
wp_reset_query();
?>


この記事が気に入ったら下のボタンをクリック

  • このエントリーをはてなブックマークに追加
  • Clip to Evernote
  • LINEで送る


One Response so far.

  1. [...] ()を利用して記事表示方法の幅を広げる https://www.wordpressmatome.com/query_posts%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6%E8%A8%98%E4%BA%8B%E8%A1%A8%E7%A4%BA%E6%96%B9%E6%B3%95%E3%81%AE%E5%B9%85%E3%82%92%E5%BA%83%E3%81%92%E3%82%8B/ [...]

Leave a Reply