Как получить все сообщения с любым статусом сообщения?

Я создаю переднюю панель, где мне нужно показать все сообщения текущего пользователя. Поэтому мне нужно показывать сообщения во всех штатах, в основном published, trashed и pending. Теперь я использую простой запрос, но он возвращает только опубликованные сообщения.

$query = array(
    'post_type' => 'my-post-type',
    'post_author' => $current_user->ID              
    );
    query_posts($query);

Может ли кто-нибудь помочь? Что еще мне нужно сделать?

31 голос | спросил Sisir 30 MarpmWed, 30 Mar 2011 17:41:40 +04002011-03-30T17:41:40+04:0005 2011, 17:41:40

3 ответа


47

Вы можете использовать параметр post_status:

* 'publish' - a published post or page
* 'pending' - post is pending review
* 'draft' - a post in draft status
* 'auto-draft' - a newly created post, with no content
* 'future' - a post to publish in the future
* 'private' - not visible to users who are not logged in
* 'inherit' - a revision. see get_children.
* 'trash' - post is in trashbin. added with Version 2.9. 

Я не уверен, что он принимает «any», поэтому используйте и массив со всеми типами, которые вы хотите:

$query = array(
    'post_type' => 'my-post-type',
    'post_author' => $current_user->ID,
    'post_status' => array('publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash')    
);
$loop = new WP_Query($query);

while ( $loop->have_posts() ) : $loop->the_post();
ответил Bainternet 30 MarpmWed, 30 Mar 2011 18:20:50 +04002011-03-30T18:20:50+04:0006 2011, 18:20:50
7

Метод класса WP_Query ->query() принимает аргумент any для post_status. См. wp_get_associated_nav_menu_items() для доказательства.

То же самое относится к get_posts() (который является только оболочкой для вызова выше).

ответил kaiser 5 +04002012-10-05T15:02:06+04:00312012bEurope/MoscowFri, 05 Oct 2012 15:02:06 +0400 2012, 15:02:06
5

Есть простой способ, как получить все сообщения с любым статусом:

$articles = get_posts(
 array(
  'numberposts' => -1,
  'post_status' => 'any',
  'post_type' => get_post_types('', 'names'),
 )
);

Теперь вы можете перебирать все сообщения:

foreach ($articles as $article) { 
 echo $article->ID . PHP_EOL; //...
}
ответил OzzyCzech 31 Jpm1000000pmThu, 31 Jan 2013 13:55:21 +040013 2013, 13:55:21

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132