wp_query mostrar entradas de la misma categoría de la publicación
En mi página de entrada estoy tratando de mostrar una lista de otras publicaciones de la misma categoría que la publicación original. Hasta ahora tengo esto y no parece funcionar:
<?php
$args = array(
'post_type' => 'article',
'posts_per_page' => 5,
'post__not_in' => array( get_the_ID() ), // Excluir el post actual
'category' => array( get_the_category() ), // Obtener posts de la misma categoría
'meta_query' => array(
array(
'key' => 'recommended_article',
'value' => '1',
'compare' => '=='
)
)
);
$query = new WP_Query( $args );
?>
<?php if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); ?>
<a class="popup-article-picture" href="<?php the_permalink(); ?>" style="background-image: url('<?php the_post_thumbnail_url(); ?>');"></a>
<a class="popup-article-title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php endwhile; endif; wp_reset_postdata(); ?>

He encontrado una respuesta:
<?php
$cats = get_the_category();
$args = array(
'post_type' => 'article',
'post__not_in' => array( get_the_ID() ),
'posts_per_page' => 5,
'cat' => $cats[0]->term_id,
'meta_query' => array(
array(
'key' => 'recommended_article',
'value' => '1',
'compare' => '=='
)
)
);
$query = new WP_Query( $args );
?>
<?php if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); ?>
<!--HTML-->
<?php endwhile; endif; wp_reset_postdata(); ?>

estás intentando consultar el tipo de entrada personalizada llamada article
. ¿Estás utilizando las categorías predeterminadas de WordPress para el tipo de entrada article
? ¿O has registrado alguna taxonomía personalizada para ese tipo de entrada? Supongo que estás usando la categoría predeterminada de WordPress para el CPT
.
El primer paso es obtener la categoría actual desde la página individual. La siguiente función devolverá las categorías asociadas a la entrada desde fuera del bucle.
get_the_category();
Devolverá un array de objetos de término. Y tendrás que obtener el slug de este array para pasarlo a la consulta. Supongamos que solo tenemos una categoría asignada para una entrada individual.
$category_obj = get_the_category();
$category = $category_obj[0]->slug;
Ahora puedes usar eso en tu consulta de entradas relacionadas.
$args = array(
'post_type' => 'article',
'posts_per_page' => 5,
'category' => $category,
'meta_query' => array(
array(
'key' => 'recommended_article',
'value' => '1',
'compare' => '=='
)
)
);
$query = new WP_Query( $args );
Y si estás usando una taxonomía personalizada para el tipo de entrada, háznoslo saber para que podamos ayudarte con las taxonomías personalizadas.
