wp_query mostrar entradas de la misma categoría de la publicación

21 sept 2016, 17:55:31
Vistas: 24.5K
Votos: 2

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(); ?>
12
Comentarios

¿Esto está dentro del loop para la publicación principal? ¿La taxonomía integrada category está adjunta a tu tipo de publicación personalizada? ¿Hay algún artículo en la misma categoría con el valor meta recommended_article == 1? Cuando dices que no funciona, ¿qué esperas ver y cómo juzgas que no está funcionando como debería?

Andy Macaulay-Brook Andy Macaulay-Brook
21 sept 2016 17:59:26

@Andy Este loop está dentro de la página de plantilla para el tipo de publicación personalizada article. recommended_article == 1 me permite filtrar publicaciones que marco como recomendadas con el valor true/false de ACF.

ERDFX ERDFX
21 sept 2016 18:05:37

No hay suficiente información para ayudarte. ¿Puedes mostrar más del archivo de plantilla en cuestión? ¿Puedes mostrar dónde has adjuntado Categories al CPT article?

Andy Macaulay-Brook Andy Macaulay-Brook
21 sept 2016 18:08:22

@Andy, utilicé Custom Post Types UI para crear un tipo de publicación personalizada y adjuntarlo a categorías existentes de WP, el bucle está dentro de single-article.php en mi plantilla. Soy muy nuevo en PHP y WordPress, así que eso es más o menos todo lo que puedo decir realmente.

ERDFX ERDFX
21 sept 2016 18:12:08

Gracias, solo estoy eliminando posibles problemas básicos. Creo que necesitamos ver toda la plantilla, si puedes editar tu pregunta para incluirla.

Andy Macaulay-Brook Andy Macaulay-Brook
21 sept 2016 18:13:35

@AndyMacaulay-Brook ¿cómo quieres que te lo muestre? La plantilla completa es bastante grande. ¿O solo necesitas ver single-article.php?

ERDFX ERDFX
21 sept 2016 20:15:37

Ese archivo es la plantilla, así que sí, pero posiblemente cualquier archivo que incluya. Puedo editar la pregunta para eliminar partes irrelevantes y acortarla.

Andy Macaulay-Brook Andy Macaulay-Brook
21 sept 2016 20:17:17

@Andy enlace Incluí functions.php pero no creo que haya nada importante allí.

ERDFX ERDFX
21 sept 2016 20:23:39

Gracias - ¿Estaría en lo correcto al decir que el artículo principal no se muestra? Por ejemplo, donde has usado the_title() no pasa nada? ¿Puedo ver header.php?

Andy Macaulay-Brook Andy Macaulay-Brook
21 sept 2016 21:09:20

@Andy Aquí tienes enlace. No, todo lo demás hasta el problema de categoría funciona perfectamente para mí

ERDFX ERDFX
21 sept 2016 21:24:22

@Andy He encontrado una solución por mi cuenta. ¡Gracias por intentar ayudar!

ERDFX ERDFX
21 sept 2016 23:30:59

¡Genial! No hay problema. Escribe tu solución como respuesta y acéptala como la correcta. Eso mantiene el formato del sitio ordenado.

Andy Macaulay-Brook Andy Macaulay-Brook
21 sept 2016 23:33:22
Mostrar los 7 comentarios restantes
Todas las respuestas a la pregunta 2
1

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(); ?>
21 sept 2016 23:17:14
Comentarios

no funciona ahora :(

Shiv Singh Shiv Singh
15 mar 2019 11:34:02
1

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.

21 sept 2016 20:47:48
Comentarios

¿Podrías explicarme exactamente qué debo hacer con ese fragmento de código? Simplemente agregarlo a la plantilla no funcionó para mí. ¡Gracias!

ERDFX ERDFX
21 sept 2016 21:19:54