Получите сообщения WordPress из тех же категорий - PullRequest
0 голосов
/ 18 июня 2020

Мне нужно вывести в отдельном сообщении WordPress список сообщений, которые имеют те же категории, что и текущее сообщение. С приведенным ниже кодом у меня есть все сообщения только из первой категории. Как получить посты из всех категорий постов (у некоторых постов 2 и более категорий).

            <?php   
                global $post;
                $current_category = get_the_category();

                $same_category = new WP_Query(array(
                    'cat'            => $current_category[0]->cat_ID,
                    'post__not_in'   => array($post->ID),
                    'orderby' => 'date',
                    'order' => 'DESC',
                    'posts_per_page' => -1,
                ));

            ?>

            <?php while ( $same_category->have_posts() ) : $same_category->the_post(); ?>
                <li>
                    <div class="borderline">
                        <a href="<?php the_permalink(); ?>">
                            <?php the_title(); ?>
                        </a>
                    </div>
                </li>
            <?php endwhile; ?>

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Попробуйте этот код.

<?php   
    global $post;
    $categories_id = array();
    $current_category = get_the_category();
    foreach($current_category as $cc){
        $categories_id[] = $cc->term_id;
    }
    $same_category = new WP_Query(array(
        'cat'            => $categories_id,
        'post__not_in'   => array($post->ID),
        'orderby' => 'date',
        'order' => 'DESC',
        'posts_per_page' => -1,
    ));
?>
0 голосов
/ 18 июня 2020

Просто используйте функцию wp_get_post_categories(), чтобы получить идентификаторы категорий текущего сообщения, а затем используйте category__in в запросе.

get_header();

    while ( have_posts() ) {
        the_post();

        // Show current posts info
        the_title();
        the_content();

        // Show posts of current post categories
        $post_id = get_the_ID();
        $post_categories = wp_get_post_categories( $post_id );

        $query_args = array(
            'post_type' => 'post',
            'post_status' => 'publish',
            'category__in' => $post_categories,
        );

        $query_res = new WP_Query($query_args);

        if ( $query_res->have_posts() ) {

            while ( $query_res->have_posts() ) {

                $query_res->the_post();

                the_title();
            }

        } else {

            echo 'Nothing to show!';
        }

        wp_reset_postdata();

    }

get_footer();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...