Tipos de postagem personalizados e ‘novo WP_Query’

Tenho o tipo de postagem personalizado ‘Partnerzy’ já configurado. Ao adicionar o novo ‘Parceiro’, você seleciona uma categoria (kredyty, leasingi, etc.). E tendo isso, preciso mostrar-lhes uma página, assim: insira a descrição da imagem aqui

Descobri que tudo o que preciso fazer é pegar todos os posts do “Partnerzy”, agrupar por categoria e finalmente mostrar no site.

Meu código parece assim:

$catArgs = array( 'type' => 'post', 'child_of' => 0, 'parent' => '', 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => 1, 'hierarchical' => 1, 'exclude' => '', 'include' => '', 'number' => '', 'taxonomy' => 'category', 'pad_counts' => false ); $categoryList = get_categories( $catArgs ); echo 'Sum: '.count($categoryList); for ($i=0; $i < count($categoryList); $i++) { echo '
Number of loop: ' . $i; echo '
Category name: ' . $categoryList[$i]->name; $the_query_partnerzy = new WP_Query( array( post_type=>'Partnerzy', category_name=>$categoryList[$i]->name ) ); echo count($the_query_partnerzy); if ($the_query_partnerzy->have_posts()) { echo 'I got it!'; echo '
'; echo '

'. $categoryList[$i]->name .'

'; while ($the_query_partnerzy->have_posts()) { $the_query_partnerzy->the_post(); echo the_post_thumbnail(); } // while echo '
'; } // query partnerzy } // for

Como eu tenho poucas categorias, cheguei com uma idéia para envolvê-lo em um loop FOR. Isso funciona tanto quanto esta linha:

  if ($the_query_partnerzy->have_posts()) 

E o que é mais interessante … Esta linha:

 echo count($the_query_partnerzy); 

realmente está contando elementos nesta consulta, mas mostra apenas 1 (estranho). E, com isso, não posso avançar mais do que isso.

Eu apreciaria qualquer tipo ou qualquer forma de ajuda.

Solutions Collecting From Web of "Tipos de postagem personalizados e ‘novo WP_Query’"

Eu honestamente não sei o problema que você está tentando resolver. Não está claro o que você está tentando cumprir com este código, mas:

echo count($the_query_partnerzy);

realmente está contando elementos nesta consulta, mas mostra apenas 1 (estranho). E, com isso, não posso avançar mais do que isso.

Não, não é. WP_Query retorna um object e a count não funciona em objects, principalmente.

Os resultados da consulta real estão em $the_query_partnerzy->posts so count($the_query_partnerzy) lhe dariam o que você quer, mas o object WP_Query já fornece esses dados para você. Use $the_query_partnerzy->found_posts vez disso.

Limpei seu código um pouco, e isso funciona usando o tipo de publicação ‘post’ (para que eu possa executar o código e testá-lo):

 $catArgs = array( 'type' => 'post', 'child_of' => 0, 'parent' => '', 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => 1, 'hierarchical' => 1, 'exclude' => '', 'include' => '', 'number' => '', 'taxonomy' => 'category', 'pad_counts' => false ); $categoryList = get_categories( $catArgs ); echo 'Sum: '.count($categoryList); $i = 0;// debugging ? for ($categoryList as $catl) { echo '
Number of loop: ' . $i; // debugging ? echo '
Category name: ' . $catl->name; $the_query_partnerzy = new WP_Query( array( 'post_type' =>'post', 'category_name' => $catl->name ) ); echo $the_query_partnerzy->found_posts; // debugging ? if ($the_query_partnerzy->have_posts()) { echo 'I got it!'; // debugging ? echo '
'; echo '

'. $catl->name .'

'; while ($the_query_partnerzy->have_posts()) { $the_query_partnerzy->the_post(); echo the_post_thumbnail(); } // while echo '
'; } // query partnerzy $i++; // debugging ? }

Algumas notas:

  1. As linhas marcadas // debugging ? certamente deve ser removido.
  2. O tipo de loop que você está usando, embora válido, raramente é necessário no PHP. Há um exemplo muito mais conveniente, e que o loop estava causando alguns erros como (por razões que não investiguei) a matriz dada por get_categories() começou com 1 e não 0 . Com isso, você não precisa se preocupar com isso.
  3. Você estava faltando aspas em seus argumentos de consulta. Ou seja, isto:

      $the_query_partnerzy = new WP_Query( array( post_type => 'post', category_name => $catl->name ) ); 

    Em vez disso:

      $the_query_partnerzy = new WP_Query( array( 'post_type' => 'post', 'category_name' => $catl->name ) ); 

    Enquanto isso deveria ter funcionado, estava cuspindo advertência como louco.

  4. Você está puxando categorias do tipo de post postagem, mas depois está tentando puxar posts de um tipo de postagem diferente com essas categorias. Você tem certeza de que as categorias estão registradas para ambos os tipos de publicação e que, de fato, existem postagens que se encheckboxm nessa lógica?

Dito isto, o código é bom e funciona para mim.

Então, graças a vocês, eu descobri a resposta.

Aqui está o meu código:

 foreach ($categoryList as $thisCategory) { $query = new WP_Query( array( 'post_type' => 'partnerzy' ) ); if ($query->have_posts()) { echo '
'; echo '

'. $thisCategory->name .'

'; echo '
'; while ($query->have_posts()) { if (in_category($thisCategory->slug, $query->the_post())) { echo '
'; echo '
'; echo the_post_thumbnail(); echo the_title('', ''); echo '
'; } } // while echo '
'; } else { echo '
nope

'; } // query partnerzy wp_reset_postdata(); } // foreach

Obrigado pelo seu tempo. Felicidades