Baki
Hej, seré breve. Quiero generar esto en un bucle WP:
Support
Category1
-Post1
-Post2
Category2
-PostA
-PostB
-PostC
Así que quiero ordenar las publicaciones por categoría que se encuentran en un tipo de publicación personalizada: support
(creado gracias al complemento Tipos, enlace: ujeb.se/A4zqZ).
Tengo esto:
<?php
$args = array('post_type' => 'support');
$query = new WP_Query($args);
while($query -> have_posts()) : $query -> the_post(); ?>
<p><?php the_category(); ?></p>
<h2><a href="https://stackoverflow.com/questions/31973457/<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p><?php the_content(); ?></p>
<?php endwhile; ?>
Mi $query
almacena todas las publicaciones necesarias de mi tipo de publicación personalizada (support
) pero tengo un problema al mostrarlos por categoría. Creo que necesito algún tipo de foreach
pero realmente no puedo entenderlo. ¿Alguna sugerencia?
/editar/
La pantalla actual se ve así:
Support, Category1
Post1
---
Support, Category2
PostA
---
Support, Category1
Post2
etc.
maderahack
Así es como lo haces. Necesitabas un bucle foreach para recorrer las categorías.
<?php
$cats = get_categories();
foreach ($cats as $cat) {
$args = array(
'post_type' => 'support',
'tax_query' => array(
array(
'taxonomy' => 'category',
'field' => 'term_id',
'terms' => $cat->cat_ID,
),
),
);
$query = new WP_Query($args);
if ( $query->have_posts() ): ?>
<p><?php echo $cat->cat_name ; ?></p> <?
while($query -> have_posts()) : $query -> the_post(); ?>
<h2><a href="https://stackoverflow.com/questions/31973457/<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p><?php the_content(); ?></p> <?php
endwhile;
endif;
// Added this now
wp_reset_query() ;
}
-
Desafortunadamente, esto no funciona 🙁 Obtiene todas las categorías y descarta las
support
tipo de publicación, así que también obtengo publicaciones/categorías no relacionadas.– Baki
13 de agosto de 2015 a las 17:24
-
Hmm, ¿cómo hago para restablecer la consulta? traté de poner
wp_reset_query();
en algunos lugares, pero nada cambió realmente. He echado un vistazo más de cerca a lo que realmente sale y obtengo todas las categorías que tengo (las desupport
y los no relacionados) y cada uno de ellos tiene el mismo conjunto de puestos, que son lossupport
publicaciones– Baki
13 de agosto de 2015 a las 19:01
-
usort()
+the_posts
filtrar. Busca en mi perfil, recientemente he hecho algo similar 😉– Pieter Goosen
13 de agosto de 2015 a las 19:15
-
Funcionó, gracias! Una pregunta de seguimiento rápida (aunque probablemente pueda resolver esto por mi cuenta), ¿cómo excluyo una categoría? Traté de agregar
'cat' => '-excludeme',
a la matriz, pero no funcionó.– Baki
13/08/2015 a las 21:10
-
Simplemente agregue la tecla de operador como esta al
$args
como otro parámetroarray( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => array( 103, 115, 206 ), 'operator' => 'NOT IN', ),
– LumberHack
13 de agosto de 2015 a las 21:36
este trabajo para mi:
$posts = new WP_Query(array(
'category_name' => 'news,
'post_status' => 'publish',
'post_type' => 'post',
'posts_per_page' => 6,
));
Intenta reemplazar
while($query -> have_posts()) : $query -> the_post(); ?>
con<?php if (have_posts()) : ?>
. También en lugar de endwhile usa endif. En tus $args necesitas algo como'orderby' => array( 'postcol' => 'DESC', 'categorycol' => 'DESC' )
– Mihai
12 de agosto de 2015 a las 20:08
Gracias por intentarlo, pero cambiando el
while
bucle a unif
cambia la salida aSupport
:– Baki
12 de agosto de 2015 a las 20:48