query_posts, get_posts : WordPress

Pocket

query_postsとget_postsの違いをメモ。

どちらもパラメータを指定して目的のポスト情報を取得する。違いについて引用する。

query_posts() 関数はメインの WordPress ループだけを変更するためのものです。新たなループを作るためのものではありません。メインループの他にループが必要な場合は、get_posts() を使ってください。メインループの他で query_posts() を使用すると、メインループが不正な状態になり期待する結果が得られません。

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

またパラメータはquery_postsとget_postsは2.6以降同じものをとることができる。

“WordPress 2.5以前”のパラメータに加えて、get_posts() は、query_posts() が取るパラメータを取ることができます。これらの関数は内部で同じデータベースクエリを使用します。

» テンプレートタグ/get posts – WordPress Codex 日本語版

twentytenはカテゴリー「未分類」を表示する際にカテゴリーテンプレートcategory.phpを呼び出して[投稿] → [新規追加]から投稿したポスト情報を表示する。
get_postsはカテゴリーテンプレートからほかのポスト情報(本記事ではfunctions.phpで定義したカスタム投稿ポストexampleのポスト情報)を取得できる。

function.php

/**
 * カスタム投稿タイプ 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);
}

category.php

// 追加を開始
<?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

コメント

Trackbacks

  1. […] http://web.donnatokimo.com/wordpress/53 http://elearn.jp/wpman/column/c20110121_01.html https://findxfine.com/programming/wp/995553309.html […]

    ピンバックbyWP テンプレートタグ | tide2012 — 2012-04-17 @ 11:33 AM


コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。