it-swarm.com.de

Wie bestelle ich bei post_status?

Ich benutze get_posts() wie folgt:

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

das ist nicht möglich, weil es nicht in den erlaubten Schlüsseln der parse_orderby() -Methode enthalten ist

Wie kann man diese Einschränkung umgehen?

5
Xaver

Sie können 'posts_orderby' filter verwenden, um die durchgeführte SQL zu ändern.

Beachten Sie, dass:

  • mit get_posts() müssen Sie das Argument 'suppress_filters' von false festlegen, damit der Filter ausgeführt wird
  • wenn Sie 'post_status' nicht explizit festlegen, erhalten Sie nur veröffentlichte Beiträge (es ist also nicht viel zu bestellen).

Codebeispiel:

$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