web-dev-qa-db-ja.com

Post_statusで注文するには?

私は get_posts() を次のように使います。

$posts = get_posts(array('orderby' => 'post_status'))

parse_orderby() メソッドの許可されたキーにないため、これは不可能です。

この制限を回避する方法は?

5
Xaver

実行されたSQLを変更するために 'posts_orderby' filterを使用することができます。

ご了承ください:

  • get_posts()を使うには、フィルタを実行するためにfalse'suppress_filters'引数を設定する必要があります。
  • 明示的に'post_status'を設定しない場合は、公開された投稿のみが表示されます(注文する必要はあまりありません)。

コードサンプル:

$filter = function() {
  return 'post_status ASC';
};

add_filter('posts_orderby', $filter);

$posts = get_posts('post_status' => 'any', 'suppress_filters' => false);

remove_filter('posts_orderby', $filter);
8
gmazzap