WordPress получение записей по категории
У меня есть следующий фрагмент кода:
$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), я получаю стандартные записи.
Я не могу понять, в чем проблема. Кто-нибудь может увидеть, что не так?

Скорее всего, вы используете пользовательскую таксономию, а не встроенную таксономию 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
],
],
// Остальные аргументы
];
ДОПОЛНИТЕЛЬНЫЕ РЕСУРСЫ

<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>
Возможно, это поможет вам.
Спасибо

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

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

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

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