web-dev-qa-db-ja.com

すべての投稿を投稿ステータスで取得する方法

現在のユーザーによるすべての投稿を表示する必要があるフロントエンドダッシュボードを作成しています。だから、私はすべての州、主にpublishedtrashedpendingで投稿を表示する必要があります。私は今簡単なクエリを使用していますが、公開された投稿のみを返しています。

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

誰も手伝ってくれる?他に何をする必要がありますか?

34
Sisir

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();
59
Bainternet

WP_Queryクラス・メソッド->query()は、post_statusに対してany引数を受け入れます。証明については wp_get_associated_nav_menu_items() を参照してください。

同じことがget_posts()にも言えます(これは上記の呼び出しのラッパーです)。

6
kaiser

簡単な方法、どのようなステータスの投稿をすべて取得するかがあります。

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

今、あなたはすべての記事を通して繰り返すことができます:

foreach ($articles as $article) { 
 echo $article->ID . PHP_EOL; //...
}
6
OzzyCzech

ほとんどの場合、get_posts()'any'パラメーターと一緒に使用できます。

$posts = get_posts(
 array(
  'numberposts' => -1,
  'post_status' => 'any',
  'post_type' => 'my-post-type',
 )
);

ただし、この方法では、ステータスがtrashおよびauto-draftの投稿を取得できません。次のように、明示的に提供する必要があります。

$posts = get_posts(
 array(
  'numberposts' => -1,
  'post_status' => 'any, trash, auto-draft',
  'post_type' => 'my-post-type',
 )
);

または、get_post_stati()関数を使用して、既存のすべてのステータスを明示的に提供できます。

$posts = get_posts(
 array(
  'numberposts' => -1,
  'post_status' => get_post_stati(),
  'post_type' => 'my-post-type',
 )
);
1

あなたがanypost_statusとして渡したとしても、あなたは 結果の中でポストを得ることはできません 以下のすべての条件が当てはまる場合:/

  1. 単一の投稿が照会されています。この例としては、name、つまりスラッグによる照会があります。
  2. 投稿のステータスが公開されていません。
  3. クライアントにアクティブな管理セッションがありません。つまり、現在ログインしていません。

溶液

明示的に すべてのステータスについて問い合わせます。たとえば、trashまたはauto-draftではないstatiを照会するには(これらを使用することはほとんど考えられません)、次のようにします。

$q = new WP_Query([
    /* ... */
    'post_status' => get_post_stati(['exclude_from_search' => false]),
]);
0
XedinUnknown