query_postsとget_postsの違いをメモ。
どちらもパラメータを指定して目的のポスト情報を取得する。違いについて引用する。
query_posts() 関数はメインの WordPress ループだけを変更するためのものです。新たなループを作るためのものではありません。メインループの他にループが必要な場合は、get_posts() を使ってください。メインループの他で query_posts() を使用すると、メインループが不正な状態になり期待する結果が得られません。
またパラメータはquery_postsとget_postsは2.6以降同じものをとることができる。
“WordPress 2.5以前”のパラメータに加えて、get_posts() は、query_posts() が取るパラメータを取ることができます。これらの関数は内部で同じデータベースクエリを使用します。
twentytenはカテゴリー「未分類」を表示する際にカテゴリーテンプレートcategory.phpを呼び出して[投稿] → [新規追加]から投稿したポスト情報を表示する。
get_postsはカテゴリーテンプレートからほかのポスト情報(本記事ではfunctions.phpで定義したカスタム投稿ポストexampleのポスト情報)を取得できる。
/** * カスタム投稿タイプ example */ add_action('init', 'create_example'); function create_example(){ $labels = array( 'name' => 'サンプル', 'singular_name' => 'サンプル', 'add_new' => 'サンプルを追加', 'add_new_item' => '新しいサンプルを追加', 'edit_item' => 'サンプルを編集', 'new_item' => '新しいサンプル', 'view_item' => 'サンプルを編集', 'search_items' => 'サンプルを探す', 'not_found' => 'サンプルはありません', 'not_found_in_trash' => 'ゴミ箱にサンプルはありません', 'parent_item_colon' => '' ); $args = array( 'labels' => $labels, 'public' => true, 'capability_type' => 'post', 'hierarchical' => false, 'supports' => array( 'title' ) ); register_post_type('example', $args); }
// 追加を開始 <?php $lastposts = get_posts('post_type=example&posts_per_page=2'); ?> <?php foreach($lastposts as $post) : setup_postdata($post); ?> <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> <?php endforeach; ?> <?php wp_reset_postdata(); ?> // 追加を終了
wp_reset_postdataを呼び出さないとそれ以降はカスタム投稿タイプexampleの最後のポスト情報を参照する。
» get_posts() と WP_query() | WordPress の部屋
» テンプレートタグ/get posts
[…] http://web.donnatokimo.com/wordpress/53 http://elearn.jp/wpman/column/c20110121_01.html https://findxfine.com/programming/wp/995553309.html […]
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。