More Related Content
Similar to WordPress クエリを攻略しよう!
Similar to WordPress クエリを攻略しよう! (9)
More from Yusuke Hayasaki
More from Yusuke Hayasaki (6)
WordPress クエリを攻略しよう!
- 12. query_posts();
✤ WordPressが投稿を表示するのに使用しているメインクエリーを置き
換える手段
✤ query_posts('posts_per_page=1'); 投稿→1件/ページ
✤ カテゴリアーカイブページで$wp_query(メインクエリ)を確認
category_nameは?
✤ ページ送りも迷子に(方法はあるけど)
使いません!
注 1: この関数はプラグインまたはテーマの中で使われることを想定されていません。後ほど出てくる説明にあるように、メインク
エリーを変更するにはパフォーマンス面でも優れたより良いオプションが存在します。
注 2: query_posts() はページ内のメインクエリーを書き換え、新しいクエリーのインスタンスと置き換えるために使う関数として
は過度に単純化され、問題が発生しやすい方法です。非効率的で(SQL クエリを再実行します)、一部の状況では適切に実行する
こともできません(特にページング処理)。モダンな WordPress コードではもっと安定したメソッドを使うべきです。例えば
pre_get_posts フックを使った方法などです。ひとことで言うと、query_posts() は決して使うべきではありません。
以上のことをしっかり理解し、この関数を賢く活用してください。
問題が発生する!
- 18. 練習問題
✤ トップページに特定のカテゴリの最新記事のタイトルを記事へのリンク
付で5つ表示しなさい
<dl>!
<?php!
$args = array(!
! 'posts_per_page' => 5,!
! 'category_name' => 'books'!
! );!
$dtfmt = get_option('date_format');!
$myposts = get_posts( $args );!
foreach ( $myposts as $post ) :!
! ?>!
! <dt><?php echo date($dtfmt, strtotime($post -> post_date)); ?></dt>!
! <dd><a href="<?php echo get_permalink($post->ID); ?>"><?php echo $post ->
post_title; ?></a></dd>!
<?php endforeach; ?>!
!
</dl>
get_posts(); を使った例:
- 19. <dl>!
<?php!
$wp_query = new WP_Query(); //WP_Queryの新しいインスタンスを作成!
$param = array(!
'category_name' => 'books', //カテゴリ名!
'posts_per_page' => '5', //表示件数!
'post_type' => 'post', //投稿タイプ!
'orderby' => 'date', //日付でソート!
'order' => 'DESC' //新しい順!
);!
$wp_query->query($param); //上記のパラメータを代入!
if( $wp_query->have_posts() ) : while( $wp_query->have_posts() ) : $wp_query-
>the_post(); //ループ開始!
?>!
!
<!-- 日付を表示 -->!
<dt><?php the_time('Y年m月d日'); ?></dt>!
!
<!-- パーマリンクを表示 -->!
<dd><a href="<?php the_permalink(); ?>">投稿記事へのリンク</a></dd>!
!
<?php!
endwhile; endif; //ループ終了!
wp_reset_postdata(); //メインクエリーを元に戻す!
?>!
</dl>
wp_query(); を使った例(小久保 勇樹さん提供):