게시물 상태가있는 모든 게시물을 가져 오는 방법은 무엇입니까?
-
-
[`post_status` 매개 변수] (http://codex.wordpress.org/Function_Reference/WP_Query#Type_.26_Status_Parameters)를 사용해 보셨습니까?` 'post_status'=> 'any'`?Have you tried using the [`post_status` parameter](http://codex.wordpress.org/Function_Reference/WP_Query#Type_.26_Status_Parameters), ie. `'post_status' => 'any'`?
- 5
- 2011-03-30
- t31os
-
*** 강력하게 ***`query_posts` 대신`WP_Query``pre_get_posts` 또는`get_posts`를 사용하는 것이 좋습니다.`query_posts`를 사용하지 마십시오.I ***strongly*** recommend using `WP_Query` `pre_get_posts` or `get_posts` instead of `query_posts`. Never use `query_posts`
- 2
- 2013-04-16
- Tom J Nowell
-
@TomJNowell : 그게 돌아 왔습니다. :) 저는 지금 WP_Query를 가장 많이 사용합니다 ..@TomJNowell: that was way back :) I use WP_Query most ofter now..
- 0
- 2013-04-17
- Sisir
-
@Sisir는주의하세요. 프론트 엔드에는`WP_Query`를 사용하고`wp_reset_postdata`에 문제가 있으므로 관리자 쿼리에는`get_posts`를 사용하세요 ([note] (https://codex.wordpress.org/Class_Reference/WP_Query 참조)이 문제에 대한 #Interacting_with_WP_Query) 및 [ticket] (https://core.trac.wordpress.org/ticket/18408)).@Sisir be careful, use `WP_Query` for front-end, and `get_posts` for admin queries as there is an issue with `wp_reset_postdata` (see the [note](https://codex.wordpress.org/Class_Reference/WP_Query#Interacting_with_WP_Query) and [ticket](https://core.trac.wordpress.org/ticket/18408) on this issue).
- 1
- 2017-01-30
- Aurovrata
-
5 대답
- 투표
-
- 2011-03-30
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'를 허용하는지 확실하지 않으므로 원하는 모든 상태의 배열을 사용하세요.
$args = array( 'post_type' => 'my-post-type', 'post_author' => $current_user->ID, 'post_status' => array('publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash') ); $query = new WP_Query($args); while ( $query->have_posts() ) : $query->the_post();
You can use the post_status parameter:
* '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.
I'm not sure that it accepts 'any' so use an array with all of the statuses you want:
$args = array( 'post_type' => 'my-post-type', 'post_author' => $current_user->ID, 'post_status' => array('publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash') ); $query = new WP_Query($args); while ( $query->have_posts() ) : $query->the_post();
-
`get_post_stati ()`를 사용하여 커스텀 상태를 포함한 모든 상태를 가져올 수도 있습니다.You could also use `get_post_stati()` to get all statuses, including custom ones.
- 8
- 2013-01-31
- fuxia
-
`query_posts` 호출을 중단 할 수있는 낭비되는 기회 ...A wasted opportunity to kill off a `query_posts` call...
- 5
- 2013-04-16
- Tom J Nowell
-
너무 안타깝게도이` 'post_status'=> array ( '!inherit');`(상속 이외의post_status를 나타 내기 위해)와 같은 것을 할 수 없습니다.too bad we can't do something like this `'post_status' => array( '!inherit' );` (to indicate any post_status other than inherit)
- 0
- 2017-01-03
- aequalsb
-
@aequalsb` 'post_status'=> array_diff (get_post_stati (),[ 'inherit']);`@aequalsb what about `'post_status' => array_diff(get_post_stati(), ['inherit']);`
- 0
- 2018-10-29
- Cheslab
-
주제를 벗어.'any'는 실제로 진짜입니다.문서 : https://developer.wordpress.org/reference/classes/wp_query/#post-type-parametersoff-topic. 'any' is a real thing actually. Docs: https://developer.wordpress.org/reference/classes/wp_query/#post-type-parameters
- 2
- 2020-01-20
- kirillrocks
-
- 2013-01-31
모든 상태의 게시물을 얻는 간단한 방법이 있습니다.
$articles = get_posts( array( 'numberposts' => -1, 'post_status' => 'any', 'post_type' => get_post_types('', 'names'), ) );
이제 모든 게시물을 반복 할 수 있습니다.
foreach ($articles as $article) { echo $article->ID . PHP_EOL; //... }
There is simple way, how to get all posts with any status:
$articles = get_posts( array( 'numberposts' => -1, 'post_status' => 'any', 'post_type' => get_post_types('', 'names'), ) );
Now you can iterate throughout all posts:
foreach ($articles as $article) { echo $article->ID . PHP_EOL; //... }
-
** $posts 및 $post가 Wordpress의 자체 변수 이름과 충돌합니다 **.이 코드를 사용하여 기본 (주요 콘텐츠) div가 아닌 다른 항목을 넣으면main에 표시된 내용을 덮어 씁니다.원래 쿼리 결과를 완전히 바꾸려는 의도라면 물론 이것이 원하는 것입니다.그러나 $posts 및 $post 변수의 이름을 바꾸는 것은 여전히 좋은 생각입니다.**$posts and $post conflict with Wordpress' own variable names**. If you are using this code to put something in other than the primary (main content) div, this will overwrite what would have been shown in main. If your intention really is to completely replace the original query results, this is what you want, of course. But it's still a good idea to rename the $posts and $post variables.
- 2
- 2014-02-03
- Henrik Erlandsson
-
@Henrik 저는 귀하의 의견을 전혀 줄이려는 것이 아닙니다 (귀하의 논리는 건전하고 안전합니다).개발 중에 논리를 유지하는 데 도움이됩니다.@Henrik i am not intending to diminish your comment at all (your logic is sound and safe), but i consider using $post/$posts as perfectly acceptable inside a function without access to the global $post/$posts variables -- because it helps me maintain logic during development.
- 5
- 2017-01-03
- aequalsb
-
- 2012-10-05
WP_Query
클래스 메소드->query()
는any
에 대한post_status
인수를 허용합니다.증명은wp_get_associated_nav_menu_items()
를 참조하세요.get_posts()
도 마찬가지입니다 (위 호출의 래퍼 일뿐입니다).The
WP_Query
class method->query()
accepts anany
argument forpost_status
. Seewp_get_associated_nav_menu_items()
for a proof.The same goes for
get_posts()
(which is just a wrapper for above call).-
WP_Query 문서에서 : _'any '-'exclude_from_search '가true로 설정된 게시물 유형의 상태를 제외한 모든 상태를 검색합니다.draft` 및`trash`는 제외됩니다.From the WP_Query docs: _'any' - retrieves any status except those from post types with 'exclude_from_search' set to true._ (There's a typo there, they actually mean post statuses instead of post types.) This means statuses `auto-draft` and `trash` are excluded.
- 4
- 2013-04-15
- Tamlyn
-
@ Tamlyn Afaik,이것은 오타가 아닙니다.공개적으로 사용 가능한 게시물 유형에서 _ 모든 상태를 검색합니다.상태는 단지 용어입니다.그들 스스로는 _public_ 또는 _private_ 속성이 없습니다.어떤 이유로 든`query_var`를 비활성화하여 분류를 비활성화 할 수 있습니다.참고 : [게시물 상태의 복수형은 ...] (http://unserkaiser.com/uncategorized/status-and-plural/).@Tamlyn Afaik, this is no typo. It _retrieves any status from post types_ that are publicly available. Status are just terms. They got no _public_ or _private_ property themselves. You _could_ disable a taxonomy with disabling the `query_var`... for whatever reason one would do that. Sidenote: [The plural of post status is...](http://unserkaiser.com/uncategorized/status-and-plural/).
- 0
- 2013-04-15
- kaiser
-
코드를 살펴보면 (종종 문서를 읽는 것보다 쉬웠습니다)`WP_Query #get_posts ()`가`exclude_from_search`가true 인 값에 대해`$ wp_post_statuses`를 필터링하는`get_post_stati ()`를 호출한다는 것을 알 수 있습니다.이 [statuses] (https://www.google.com/search?q=define+statuses)가 포함 된 게시물을 검색어에서 제외합니다.post_type이 'any'로 설정된 경우 포스트 유형에 대한 유사한 프로세스가 있습니다.If you trace through the code (often easier than reading the docs, I find) you can see that `WP_Query#get_posts()` calls `get_post_stati()` which filters `$wp_post_statuses` for values where `exclude_from_search` is true then it excludes posts with these [statuses](https://www.google.com/search?q=define+statuses) from the query. There's a similar process for post types when post_type is set to 'any'.
- 1
- 2013-04-16
- Tamlyn
-
@Tamlyn`$ wp_post_statuses` 속성의 내용을 확인한 후 귀하가 옳다는 것을 인정해야합니다 :)@Tamlyn After checking the contents of the `$wp_post_statuses` property, I have to admit that you're right :)
- 0
- 2013-04-16
- kaiser
-
휴지통 상태에서는 작동하지 않습니다.doesn't work for trash status.
- 0
- 2018-12-10
- Maxwell s.c
-
- 2019-08-28
대부분의 경우
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', ) );
In most cases you can use
get_posts()
with'any'
parameter for this:$posts = get_posts( array( 'numberposts' => -1, 'post_status' => 'any', 'post_type' => 'my-post-type', ) );
But this way you won't get posts with status
trash
andauto-draft
. You need to provide them explicitly, like this:$posts = get_posts( array( 'numberposts' => -1, 'post_status' => 'any, trash, auto-draft', 'post_type' => 'my-post-type', ) );
Or you can use get_post_stati() function to provide all existing statuses explicitly:
$posts = get_posts( array( 'numberposts' => -1, 'post_status' => get_post_stati(), 'post_type' => 'my-post-type', ) );
-
- 2019-03-28
any
를post_status
로 전달하더라도 다음 조건이 모두 참인 경우 결과에 여전히 게시물이 표시되지 않습니다.- 단일 게시물을 쿼리 중입니다.이에 대한 예는
name
,즉 슬러그로 쿼리하는 것입니다. - 게시물이 공개되지 않은 게시물 상태입니다.
- 클라이언트에 활성 관리 세션이 없습니다. 즉,현재 로그인되어 있지 않습니다.
솔루션
모든 상태에 대해 명시 적으로 쿼리합니다.예를 들어
trash
또는auto-draft
이 아닌 통계를 쿼리하려면 (원하는 것 같지 않음) 다음과 같이 할 수 있습니다.$q = new WP_Query([ /* ... */ 'post_status' => get_post_stati(['exclude_from_search' => false]), ]);
Even if you pass
any
aspost_status
, you still will not get the post in the result if all of the following conditions are true:- A single post is being queried. An example of this would be querying by
name
, i.e. the slug. - The post has a post status that is not public.
- The client does not have an active admin session, i.e. you are not currently logged in.
Solution
Query explicitly for every status. For example, to query for stati which are not
trash
orauto-draft
(it's pretty unlikely that you want those), you could do something like this:$q = new WP_Query([ /* ... */ 'post_status' => get_post_stati(['exclude_from_search' => false]), ]);
현재 사용자의 모든 게시물을 표시해야하는 프런트 엔드 대시 보드를 만들고 있습니다.따라서 주로
published
,trashed
및pending
과 같은 모든 상태의 게시물을 표시해야합니다.이제 간단한 쿼리를 사용하고 있지만 게시 된 게시물 만 반환합니다.누구나 도울 수 있습니까?그 밖에 무엇을해야합니까?