mediol-name
@mediol-name
Wordpress Developer

Почему не считывается ID категории?

Итак, я пробую вывести название категории, а под ними - посты этой категории. Перебираю существующие категории через форич. В нем получаю идентификатор категории и передаю его в аргументы для вывода постов. Но, все равно под каждой категорией выводятся все посты. Делаю вывод, что функция get_posts() не считывает переданный мною айдишник категории или я его неправильно передаю. Как быть?

$loc_cat_args = [
                'taxonomy'     => 'location-categories',
                'type'         => 'location',
                'orderby'      => 'name',
                'order'        => 'ASC',
                'hide_empty'   => 1,
                'exclude'      => '',
                'include'      => '',
                'number'       => 0,
                'pad_counts'   => false,
            ];
            $loc_categories = get_categories( $loc_cat_args );
<?php foreach($loc_categories as $category) : ?>
                        <div class="location-widget">
                            <h3><?php echo $category -> name ?></h3>
                            <ul class="location__list">
                            <?php 
                                $cat_id = $category -> term_id;
                                $locations = get_posts([
                                    'post_type' => 'location',
                                    'category'  =>  (int)$cat_id,
                                    'orderby'   => 'name',
                                    'order'     => 'ASC',
                                ]);
                                foreach( $locations as $loc ) : ?>
                                <li><a href="<?php echo get_permalink($loc) ?>"><?php echo $loc -> post_title ?></a></li>
                                <?php endforeach ?>
                            </ul>
                        </div>
                    <?php endforeach ?>
  • Вопрос задан
  • 34 просмотра
Решения вопроса 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Потому что location-categories у вас это таксономия, а не категория и собирать ее нужно с помощью массива tax_query

$args = [
	'post_type' => 'location',
	'orderby'   => 'name',
	'order'     => 'ASC',
	'tax_query' => [
		'relation' => 'AND',
		[
			'taxonomy' => $category->taxonomy,
			'field'    => 'id',
			'terms'    => $category->term_id
		]
	]
];

$locations = get_posts( $args );
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы