Como obter uma matriz de dados postados do resultado WP_Query?
-
-
Uma diferençaimportanteparaterem menteentre o acesso aos dadospostais versus usandotags demodelo é que osfiltrosnão são aplicados aos dadose algumasfuncionalidadespodem ser quebradas.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 respostas
- votos
-
- 2012-08-11
Você deve ler o Referência defunçãopara wp_query no WordPress Codex.Lá vocêtem muitosexemplospara olhar.Se vocênão quiser loop sobre o conjunto de resultados usando um
while
,vocêpoderá obtertodas aspostagens retornadaspela consulta com oWP_Query
napropriedadeposts
.porexemplo
$query = new WP_Query( array( 'post_type' => 'page' ) ); $posts = $query->posts; foreach($posts as $post) { // Do your stuff, e.g. // 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; }
-
Nenhum dosexemplos que você vinculapara demonstra comoprocessarposts,noentanto.Então ébom que você respondesse,pena queelesnãotenhamna documentação.Outra dica: Se vocêestáfazendo umapartidaem umapostagem única,vocêpode usar umafunção comoesta com `'posts_per_page'=> 1`em args.`função wp_quereryfirstpost ($ args) { $ Q=NOVO WP_Query ($ args); $pp=$ Q->get_posts (); $firstpost=false; se ($pp) $firstpost=$pp [0]; WP_RESET_POSTDATA (); retornar $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: Você é um santo!Ótimopara contornarget_the_title/id/younameit.@rofflox: You are a saint! Great for circumventing get_the_title/ID/younameit.
- 0
- 2015-04-30
- Vial
-
Você deve usar `$ Query->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 ();nãoestáfuncionando comoesperado.Nãotenho certezaporque,mas retornamenospost do que a consulta.Veja aqui: https://stackoverflow.com/questions/25395299/how-do-i-i-wordpress-wp-quer-get-posts-on-multiple-categories-to-$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
-
Esta resposta é simples,quando você cria umnovo WP_Query com alguns argumentos,ométodoget_posts () é chamadointernamenteimediatamentee não deve chamá-lo denovo!Se você ligarnovamente conformemostradonoexemplo acima,eleexecutará uma consulta diferente,dependendo dos argumentose resultadosformam aexecuçãoinicial (bandeirasinternas definidas,etc.),e podepotencialmente devolver um conjunto diferente de resultados (menor)ounenhum resultado.Como Tomjnowelle Laxmana sugeriram acima de um deve usar $ Consulta->postspara obter os dados dopost.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
Na verdade,vocênãoprecisa se recusar a usar
enquanto ()
loop.Omesmo objeto WP_POSTjáestá armazenadoemPost
Propriedade:$ Query=New WP_Query ($ args); if ($ query- >ter_posts ()) { enquanto ($ query- > have_posts ()) { $ query- >the_post (); //agora $ query- >post é wp_post objeto,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. } }
-
`se é redundante.`if` is redundant.
- 2
- 2017-01-26
- Akkumulator
-
Não,'se é redundante.Nesse casoexato,é,namaioria das situações deprodução,vocêtem códigoparaexecutarentre o see otempo.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 quetorna redundante,neste casoexato.Aspessoas devem aprender quando usarisso.@magi182 Which makes it redundant, in this exact case. People should learn when to use this.
- 2
- 2017-04-03
- frodeborli
-
@Fodeborli,a coisa legal sobre declarações que começam com "aspessoas devem" é que você quase sempre substitua "aspessoasnão vão"e a afirmação ainda é verdadeira.@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 Euprovavelmentepoderiafazer cem legaisparater linhas de códigopara complementar o código acima.@magi182 I could probably make a hundred nice to have code lines to complement the above code.
- 1
- 2017-04-08
- frodeborli
-
Esta deve ser a respostaescolhidathis should be the chosen answer
- 0
- 2018-10-27
- bysanchy
-
- 2019-04-16
Vocêtambémpode usar
get_posts( $args )
em vez dewp_Query()
,que lhe dará uma lista depostsyou can also use
get_posts( $args )
instead ofwp_Query()
, which will give you a list of posts
Quandoexecutar uma consulta com ométodo WP_Query,recebi um objeto.Euentendo quepossofazer o loopparaexibir coisas.Mas,meu objetivonão éexibirnada,em vez disso,eu quero obter alguns dadospostadosfazendo algo como "foreach ...".Comoposso obter umamatriz de dadospostados queeuposso ligare receber dados?