태그 보관물: wp-query

wp-query

게시물 상태가 모든 게시물을 얻는 방법? 저는 주로

현재 사용자의 모든 게시물을 표시해야하는 프런트 엔드 대시 보드를 만들고 있습니다. 그래서 저는 주로 모든 국가에 게시물을 표시해야 published, trashed하고 pending. 현재 간단한 쿼리를 사용하고 있지만 게시 된 게시물 만 반환합니다.

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

누구든지 도울 수 있습니까? 다른 무엇을해야합니까?



답변

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. 

나는 그것이 ‘모든’을 받아 들일 지 확신하지 못하므로 원하는 모든 유형을 사용하고 배열하십시오 :

$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();


답변

상태를 가진 모든 게시물을 얻는 방법은 간단합니다.

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

이제 모든 게시물에서 반복 할 수 있습니다.

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


답변

WP_Query클래스 메소드는 ->query()수용 any에 대한 인수를 post_status. wp_get_associated_nav_menu_items()증거를 참조하십시오 .

동일은 간다 get_posts()(위의 호출을위한 단지 래퍼입니다).


답변

대부분의 경우이 매개 변수 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',
 )
);


답변

당신이 통과하더라도 any같은 post_status, 당신은 여전히 결과에 게시물을받지 않습니다 다음 조건 모두에 해당하는 경우 :

  1. 단일 게시물을 쿼리 중입니다. 이에 대한 예 name는 슬러그에 의한 쿼리 입니다.
  2. 게시물이 공개 상태가 아닌 게시물 상태입니다.
  3. 클라이언트에 활성 관리 세션이 없습니다 (예 : 현재 로그인하지 않은 상태).

해결책

모든 상태에 대해 명시 적으로 쿼리하십시오 . 예를 들어, stati를 쿼리하지 trash않거나 auto-draft(원하는 것 같지 않은 경우) 다음과 같이 할 수 있습니다.

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


답변