サポート » 使い方全般 » get postsでnumberpostsされるタイミングは?

  • 解決済 shokun0803

    (@shokun0803)


    get_posts( 'numberposts=3&orderby=post_modified&order=ASC&post_type=page&post_parent=1' );

    のようなコードを生成した場合、(おそらく)ID順で3件取得したあとに並べ替えが行われているようです。
    並べ替えを行った後にnumberposts=3されないとそもそも並び替えの意味も取得する投稿の数を指定する意味も半減?してしまうと思いますが、これがバグなのか仕様なのか的確な検証ができません。

    これは仕様なのでしょうか?それとも私の環境の問題なだけで実はきちんと並び替えて取得ができるものなのでしょうか?

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック投稿者 shokun0803

    (@shokun0803)

    すみません、ただのソートミスでした。。。お恥ずかしい。
    ASCではなくてDESCってなだけで(汗)

    トピック投稿者 shokun0803

    (@shokun0803)

    えっと・・・一度は解決済みにしたのですが、やはりソートがなんだかおかしくて。

    結論ですが・・・Codexの記述がおかしい?のかどうか分かりませんが、

    get_posts( 'orderby=post_modified&post_type=page' );

    ではだめで、

    get_posts( 'orderby=modified&post_type=page' );

    でソートされました。
    今回ページで試しているので投稿ではどうか分かりませんが、post_modifiedが有効ではないことは確かなようです。

    p.s.
    ああ・・・以前にも同じ内容が・・・(汗)
    http://ja.forums.wordpress.org/topic/2314?replies=4
    英語版を見ると、ずいぶん更新されていませんね、日本語版・・・

    wordpress2.9ですが、
    wp-includes/query.php 2001行目
    $allowed_keys = array('author', 'date', 'title', 'modified', 'menu_order', 'parent', 'ID', 'rand', 'comment_count');
    が get_posts で orderby に許可されているキーで
    'author', 'date', 'title', 'modified', 'parent'
    については2032行目で
    $orderby = "$wpdb->posts.post_" . $orderby;
    と、post_ を付けています。

    参照:本家CODEX

    Note: Version 2.6 changed a number of the orderby options. Table fields that begin with post_ no longer have that part of the name. For example, post_title is now title and post_date is now date.

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「get postsでnumberpostsされるタイミングは?」には新たに返信することはできません。