WordPress получение записей по категории

30 июн. 2015 г., 22:57:23
Просмотры: 153K
Голосов: 11

У меня есть следующий фрагмент кода:

$args = array(
    'posts_per_page'   => -1,
    'category'         => 7,
    'orderby'          => 'name',
    'order'            => 'ASC',
    'post_type'        => 'product'
);

$posts = get_posts($args);var_dump($posts);

Этот код должен вернуть одну запись, которая точно находится в этой категории, но этого не происходит. Если я уберу аргумент 'category', то получаю все товары, так что в целом это должно работать. Если я изменю категорию на 1 и уберу мой пользовательский тип записи (product), я получаю стандартные записи.

Я не могу понять, в чем проблема. Кто-нибудь может увидеть, что не так?

3
Комментарии

Разве не должно быть название таксономии вместо категории?

Robert hue Robert hue
30 июн. 2015 г. 23:02:03

Я пробовал это, но это не сработало. Я взял это со страницы кодекса WordPress, которая, кажется, поддерживает мой подход, но все равно не работает: "Примечание: Параметр category должен содержать ID категории, а не название категории."

Michiel Standaert Michiel Standaert
30 июн. 2015 г. 23:16:34

Минус один (-1) в posts_per_page покажет ВСЕ записи, и как только вы уберете CPT, WordPress "вернется" к обычным записям, как вы уже сами выяснили.

Charles Charles
1 июл. 2015 г. 07:49:51
Все ответы на вопрос 2
0
24

Скорее всего, вы используете пользовательскую таксономию, а не встроенную таксономию category. Если это так, то параметры категорий не будут работать. Вам понадобится tax_query для выборки записей по определённому термину. (Помните, что get_posts использует WP_Query, поэтому вы можете передавать любые параметры из WP_Query в get_posts)

$args = [
    'post_type' => 'product',
    'tax_query' => [
        [
            'taxonomy' => 'my_custom_taxonomy',
            'terms' => 7,
            'include_children' => false // Удалите, если нужны записи из дочерних терминов термина 7
        ],
    ],
    // Остальные аргументы
];

ДОПОЛНИТЕЛЬНЫЕ РЕСУРСЫ

1 июл. 2015 г. 09:00:38
6
<ul>
    <?php
    $args = array( 'posts_per_page' => 5, 'offset'=> 1, 'category' => 1 );

    $myposts = get_posts( $args );
    foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
        <li>
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
        </li>
    <?php endforeach; 
    wp_reset_postdata();?>
</ul>

Возможно, это поможет вам.

Спасибо

1 июл. 2015 г. 06:30:32
Комментарии

Было бы здорово добавить пояснение.

Nilambar Sharma Nilambar Sharma
1 июл. 2015 г. 06:49:59

Из какого 'post_type' он теперь получит ссылки, 5 в вашем случае? По моему мнению, ему нужно содержимое товаров (как я понимаю, это CPT), а не обычные записи.

Charles Charles
1 июл. 2015 г. 07:14:14

Передайте ID вашей категории в аргументы, и вы получите 5 записей из обычных постов.

Rohit Gilbile Rohit Gilbile
1 июл. 2015 г. 07:33:20

Пожалуйста, прочитайте его вопрос. Я не всегда прав, но в данном случае он хочет получить 'что-то' из пользовательского типа записи с названием Product.

Charles Charles
1 июл. 2015 г. 07:44:49

В этом случае Чарльз прав. Я знаю, как получить данные, когда у меня есть записи. Проблема была в том, что я не получал свои пользовательские записи :)

Michiel Standaert Michiel Standaert
1 июл. 2015 г. 11:56:31

@Rohitgilbile как включить изображение записи внутри цикла foreach?

user2584538 user2584538
9 мая 2018 г. 13:11:25
Показать остальные 1 комментариев