Функция get_post срабатывает несколько раз
На сайте услуги выведены через записи. В фронтенде выведены категории в табах с ajax подгрузкой постов https://i.imgur.com/fFV4NZP.png. При первой загрузке все работает как надо, но если мы кликаем на второй таб и возвращаемся к первому, код срабатывает повторно и получается каша https://i.imgur.com/sRK7pMK.png
Мой код для вывода:
<?php
$args = array(
'type' => 'post',
'parent' => 0,
'orderby' => 'id',
'order' => 'ASC',
'hide_empty' => 0,
'hierarchical' => true,
'taxonomy' => array( 'category-services'),
'pad_counts' => false,
);
$categories = get_categories($args);
$count = 1;
if( $categories ) { ?>
<!--category-filter-->
<div class="category-filter">
<div class="category-filter_content">
<?php foreach ($categories as $cat) { ?>
<a href="#" data-filter="<?php echo $cat->term_id; ?>" class="btn <?php if($count===1){ echo ' active'; }?>"><?php echo $cat->name; ?></a>
<?php $count++; } ?>
</div>
</div>
<div class="filtered-content box">
<?php $cat_this_id=$categories[0]->term_id;
$posts = get_posts( array(
'numberposts' => 4, // тоже самое что posts_per_page
'post_type' => array('services'),
'tax_query' => array(
array(
'taxonomy' => 'category-services',
'field' => 'term_id',
'terms' => $cat_this_id,
)
)
) );
if($posts) { ?>
<?php
foreach ($posts as $post) {
setup_postdata($post);
get_template_part( 'template/content-services' );
}
wp_reset_postdata();?>
<?php } ?>
</div>
<?php } ?>
В чём может быть проблема? Как заставить код срабатывать только 1 раз?
Ответы (1 шт):
Автор решения: Шемединов Сергей
→ Ссылка
Всем спасибо за помощь :)
Проблема была в строчке
<a href="#" data-filter="<?php echo $cat->term_id; ?>" class="btn <?php if($count===1){ echo ' active'; }?>"><?php echo $cat->name; ?></a>
Неправильно срабатывал фильтр, как решение поставил сторонний фильтр, не придумывая велосипед.