get_posts с несколькими категориями

21 апр. 2015 г., 17:35:46
Просмотры: 53K
Голосов: 5

Если я использую get_posts() с параметром category равным 1,2, я получу все записи из категории 1 ИЛИ 2. Как мне сделать запрос, чтобы получить записи, которые относятся к обеим категориям одновременно, то есть к 1 И 2?

0
Все ответы на вопрос 6
0
10

Как описано в кодексе, вы можете использовать следующий код:

$query = new WP_Query( array( 'category__and' => array( 2, 6 ) ) ); //запись должна находиться в категориях с ID 2 И 6 одновременно

21 апр. 2015 г. 20:42:52
1

Кодекс говорит:

Примечание: Параметр category должен содержать ID категории, а не её название.

Примечание: Параметр category может содержать список категорий, разделённых запятыми, так как функция get_posts() передаёт параметр 'category' напрямую в WP_Query как 'cat'.

Таким образом, это аналогично параметру категории в WP_Query() - cat.

21 апр. 2015 г. 17:41:26
Комментарии

Вау, я был уверен, что это даст тот же результат. Моя ошибка. Спасибо.

gubbfett gubbfett
21 апр. 2015 г. 18:02:12
0

Вы можете использовать класс WP_QUERY для поиска записей в определенных категориях, вот пример:

$query = new WP_Query( 'cat=2,6,17,38' );

Вот ссылка на документацию, где объясняется, как использовать результаты для создания цикла и отображения записей в результатах.

21 апр. 2015 г. 17:42:23
2

Существует гораздо более простой способ, который использует функцию get_posts().

<?php $args1 = array( 'posts_per_page' => 6, 'offset'=> 0, 'category' => array(2,3,25,30));
            $myposts1 = get_posts( $args1 );
            foreach ( $myposts1 as $post ) : setup_postdata( $post ); ?>
            <div class="each-post col-lg-aynk col-md-aynk col-sm-aynk col-xs-aynk">
                <a href="<?php the_permalink(); ?>">
                    <h2><?php the_title(); ?></h2>
                </a>
                <a href="<?php the_permalink(); ?>">
                    <div class="news-story-img">
                        <?php if (class_exists('MultiPostThumbnails')) : MultiPostThumbnails::the_post_thumbnail(get_post_type(), 'secondary-image'); endif; ?>
                        <?php the_post_thumbnail( get_permalink() ); ?>
                    </div>
                </a>

            </div>

            <?php endforeach; 
            wp_reset_postdata();?>
14 мар. 2016 г. 00:12:50
Комментарии

Пожалуйста, объясните, почему это помогает.

kaiser kaiser
14 мар. 2016 г. 00:58:29

Я не могу голосовать за удаление, но код даже не соответствует комментарию относительно get_posts().

Alexander Holsgrove Alexander Holsgrove
29 дек. 2016 г. 19:13:00
0

На самом деле вы можете использовать category__and напрямую с функцией get_posts():

$posts = get_posts(array( 'category__and' => array(1,2) ));
23 окт. 2016 г. 19:56:06
0

Если вы хотите использовать параметр category_name для поиска, вы можете использовать WP_Query( array("category_name" => "cat_1+cat_2+...+cat_n") ), где cat_1, cat_2, ... , cat_n — это все категории, которые должны быть у записи, чтобы она была возвращена в результате запроса.

Документация: Кодекс WordPress

21 июл. 2017 г. 16:28:46