wp_query 결과에서 포스트 데이터 배열을 얻는 방법은 무엇입니까?
-
-
포스트 데이터에 직접 액세스하는 것과 템플릿 태그를 사용하는 것 사이에 명심해야 할 중요한 차이점은 필터가 데이터에 적용되지 않고 일부 기능이 손상 될 수 있다는 것입니다.An important difference to keep in mind between accessing post data directly versus using template tags is that filters are not applied to the data and some functionality may break.
- 2
- 2016-12-30
- Milo
-
3 대답
- 투표
-
- 2012-08-11
WordPress 코덱스에서 WP_Query에 대한 함수 참조 를 읽어야합니다.여기에는 많은 예제가 있습니다.
while
을 사용하여 결과 집합을 반복하지 않으려면posts <속성의
WP_Query
를 사용하여 쿼리에서 반환 된 모든 게시물을 가져올 수 있습니다./code>.예
$ query=new WP_Query (array ( 'post_type'=> 'page')); $posts=$ query- > 게시물; foreach ($posts as $post) { //당신의 일을하십시오. //echo $post- >post_name; }
You should read the function reference for WP_Query on the WordPress codex. There you have a lot of examples to look at. If you don't want to loop over the result set using a
while
, you could get all posts returned by the query with theWP_Query
in the propertyposts
.For example
$query = new WP_Query( array( 'post_type' => 'page' ) ); $posts = $query->posts; foreach($posts as $post) { // Do your stuff, e.g. // echo $post->post_name; }
-
링크하는 예제는 게시물 처리 방법을 보여주지 않습니다.그래서 당신이 대답 한 것이 좋습니다. 그들은 문서에 그것을 가지고 있지 않습니다.또 다른 팁 : 고유 한 게시물에 대해 일치를 수행하는 경우 args에서` 'posts_per_page'=> 1`과 함께 이와 같은 함수를 사용할 수 있습니다.`function wp_queryfirstpost ($ args) { $ q=new WP_Query ($ args); $pp=$ q->get_posts (); $firstpost=false;if ($pp) $firstpost=$pp [0]; wp_reset_postdata (); return $firstpost; }`None of the examples you link to demonstrates how to process posts, though. So it's good that you answered, pity they don't have it in the documentation. Another tip: If you're doing a match on a unique post you can use a function like this with `'posts_per_page'=>1` in args. `function wp_queryfirstpost($args) { $q=new WP_Query($args); $pp=$q->get_posts(); $firstpost=false;if ($pp) $firstpost=$pp[0]; wp_reset_postdata(); return $firstpost; }`
- 1
- 2014-03-21
- Henrik Erlandsson
-
@rofflox : 당신은 성인입니다!get_the_title/ID/younameit를 우회하는 데 적합합니다.@rofflox: You are a saint! Great for circumventing get_the_title/ID/younameit.
- 0
- 2015-04-30
- Vial
-
대신`$ query->posts`를 사용해야합니다.`$ query->get_posts ()`는 쿼리 구문 분석 및 추가 불필요한 데이터베이스 쿼리의 재실행을 트리거합니다.You should use `$query->posts` instead, `$query->get_posts()` will trigger a re-running of the query parsing and additional unnecessary database queries
- 8
- 2015-11-01
- Tom J Nowell
-
$ query->get_posts ();예상대로 작동하지 않습니다.이유는 확실하지 않지만 쿼리보다 적은 게시물을 반환합니다.여기를 참조하십시오 : https://stackoverflow.com/questions/25395299/how-do-i-get-wordpress-wp-query-get-posts-on-multiple-categories-to-work$query->get_posts(); is not working as expected. Not sure why but it returns fewer post than the query. See here: https://stackoverflow.com/questions/25395299/how-do-i-get-wordpress-wp-query-get-posts-on-multiple-categories-to-work
- 0
- 2016-11-12
- Laxmana
-
이 대답은 잘못된 것입니다. 일부 인수를 사용하여 새 WP_Query를 만들 때get_posts () 메서드가 내부적으로 즉시 호출되고 다시 호출하면 안됩니다!위의 예와 같이 다시 호출하면 인수와 결과에 따라 초기 실행 (내부 플래그 집합 등)에 따라 다른 쿼리가 실행되고 잠재적으로 다른 (더 작은) 결과 집합을 반환 할 수 있습니다.또는 전혀 결과가 없습니다.TomJNowell과 Laxmana가 위에서 제안했듯이 게시물 데이터를 얻으려면 $ query->posts를 사용해야합니다.This answer is plain wrong, when you create a new WP_Query with some arguments the method get_posts() is internally called right away and you SHOULD NOT CALL IT AGAIN! If you call it again as shown in the example above it will run a DIFFERENT query, depending on the arguments and results form the initial run (internal flags set, etc..), and can potentially return a different (smaller) set of results or no results at all. As TomJNowell and Laxmana suggested above one should use $query->posts to get the post data.
- 1
- 2016-12-04
- ivanhoe
-
- 2015-10-01
사실
while()
루프 사용을 거부 할 필요는 없습니다.동일한 WP_Post 개체가 이미post
속성에 저장되어 있습니다.$query = new WP_Query( $args ); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); // now $query->post is WP_Post Object, use: // $query->post->ID, $query->post->post_title, etc. } }
Actually, you don't need to refuse to use
while()
loop. Same WP_Post Object is already stored inpost
property:$query = new WP_Query( $args ); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); // now $query->post is WP_Post Object, use: // $query->post->ID, $query->post->post_title, etc. } }
-
`if`는 중복됩니다.`if` is redundant.
- 2
- 2017-01-26
- Akkumulator
-
아니요,'if'는 중복되지 않습니다.이 정확한 경우에는 맞지만 대부분의 프로덕션 상황에서if와 while 사이에 실행할 코드가 있습니다.No, `if` is not redundant. In this exact case it is, but in most production situations, you have code to execute between the if and the while.
- 2
- 2017-03-27
- magi182
-
@magi182이 정확한 경우 중복됩니다.사람들은 이것을 언제 사용해야하는지 배워야합니다.@magi182 Which makes it redundant, in this exact case. People should learn when to use this.
- 2
- 2017-04-03
- frodeborli
-
@frodeborli,"people should"로 시작하는 문장의 좋은 점은 거의 항상 "people won't"로 대체 할 수 있고 그 문장은 여전히 사실로 테스트된다는 것입니다.@frodeborli, The nice thing about statements that start with "people should" is that you can almost always substitute "people won't" and the statement still tests as true.
- 4
- 2017-04-06
- magi182
-
@magi182 위의 코드를 보완하기 위해 코드 줄을 100 개 만들 수 있습니다.@magi182 I could probably make a hundred nice to have code lines to complement the above code.
- 1
- 2017-04-08
- frodeborli
-
이것은 선택된 대답이어야합니다this should be the chosen answer
- 0
- 2018-10-27
- bysanchy
-
- 2019-04-16
게시물 목록을 제공하는
get_posts( $args )
대신wp_Query()
를 사용할 수도 있습니다.you can also use
get_posts( $args )
instead ofwp_Query()
, which will give you a list of posts
WP_Query 메서드로 쿼리를 실행하면 개체가 생겼습니다.그런 다음 루프를 수행하여 물건을 표시 할 수 있음을 이해합니다.하지만 내 목표는 아무것도 표시하지 않고 "foreach ..."와 같은 작업을 수행하여 게시물 데이터를 얻고 싶습니다.반복해서 데이터를 얻을 수있는 포스트 데이터 배열을 어떻게 얻을 수 있습니까?