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 […]
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。