web-dev-qa-db-fra.com

wp_query affiche les messages de la même catégorie que le message

Sur ma page de publication, j'essaie d'afficher la liste des publications de la même catégorie que celle de la publication d'origine. Jusqu'ici j'ai eu ceci et cela ne semble pas fonctionner:

<?php

    $args = array(
        'post_type' => 'article',
        'posts_per_page' => 5,
        'post__not_in' => array( get_the_ID() ),
        'category'     => array( get_the_category() ),
        '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(); ?>
2
ERDFX

J'ai trouvé une réponse:

<?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(); ?>
2
ERDFX

vous essayez d'interroger le type d'article personnalisé appelé article. utilisez-vous les catégories de publication WordPress par défaut pour le type de publication article? ou avez-vous enregistré une taxonomie personnalisée pour ce type de message? Je suppose que vous utilisez la catégorie WordPress par défaut pour CPT. La première étape consiste donc à obtenir la catégorie actuelle à partir d’une seule page. La fonction suivante renvoie les catégories attachées à la publication en dehors de la boucle.

get_the_category();

il retournera un tableau d'objets terme. et vous devez obtenir le slug de ce tableau pour transmettre la requête. supposons que nous n'ayons qu'une seule catégorie attribuée pour un seul poste.

$category_obj = get_the_category();
$category = $category_obj[0]->slug;

maintenant, vous pouvez l'utiliser dans votre requête relative aux articles.

$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 );

et si vous utilisez une taxonomie personnalisée pour le type de message, veuillez nous en informer afin que nous puissions vous aider en ce qui concerne les taxonomies personnalisées.

1
Anwer AR