web-dev-qa-db-ja.com

指定された順序でIDで投稿を注文する

私のテーマのバックオフィスでは、ユーザーはフロントページに表示する投稿を選択できます。また、 選択した投稿を表示する順序を にすることもできます。

私はこのようにしてみました:

$aPostsIDs = array(1,3,2); // Note the 3 should appear before the 2
query_posts(array('post_type' => 'page', 
                  'post__in' => $aPostsIDs,
                  'order_by' => 'FIELD(ID, '.implode(',',$aPostsIDs).')'));

しかし、予想どおりには機能しません。正しいやり方は コーデックスによれば です。

add_filter('posts_orderby', 'edit_posts_orderby');
function edit_posts_orderby($orderby_statement) {
    global $aPostsIDs;
    $orderby_statement = 'FIELD(ID, '.implode(',',$aPostsIDs).')';
    return $orderby_statement;
}

しかし、それでもまだうまくいきません!投稿は、指定された順序(1、3、2)ではなくID(1、2、3)で並べられています。

どこを見ればいいですか?ありがとう

4
Rovb

WordPress 3.5以降では、orderbyパラメータによって、post__in値をpost__inパラメータの順序で並べ替えることができます。

待つことや3.5+を要求することは理想的ではないかもしれませんが、これはほとんど確実にあなたがしたいことをするための最善かつ最も簡単な方法になるでしょう。

これが 関連のtracチケットです 詳細を知りたい場合は/ /.

4
mrwweb