Я хочу вывести сообщение по категории через фильтр ajax. Он работает со стандартным типом поста в той же настройке, но с пользовательским типом поста он показывает все посты при загрузке страницы, но когда я нажимаю на ссылку категории, он показывает только правильный идентификатор категории "Array ([action] => filter_wb [category ] => 17) "
И когда я вывожу запрос $, он показывает [found_posts": 0,],
, поэтому я думаю, что он не находит содержимое категории.
Я уже проверил, если категория пуста, но когда я фильтрую ее в бэкэнде, там есть посты ... Все файлы есть. jquery работает, а xhr получает admin- ajax. php 200.
Я занимаюсь этим слишком долго и не могу понять.
Может быть, у вас есть несколько советов для меня.
// post template
</header><!-- .entry-header -->
<div class="post-filter-wrapper">
<ul class="post-filter">
<li><a class="js-filter-item-wb" href="<?= home_url(); ?>">All</a></li>
<?php
$cat_args = array(
'taxonomy' => 'category_wb',
'exclude' => array(1),
'option_all' => 'All'
);
$categories = get_categories($cat_args);
foreach($categories as $cat) : ?>
<li><a class="js-filter-item-wb" data-category="<?= ($cat->term_id); ?>" href="<?= get_category_link($cat->term_id); ?>"><?= $cat->name; ?></a></li>
<?php endforeach; ?>
</ul>
</div>
<div class="grid grid--3col-grid js-filter">
<?php
$args = array (
'post_type' => 'wuerzburg',
'posts_per_page' => -1,
);
$query = new WP_Query($args);
if($query->have_posts()) :
while($query->have_posts()) : $query->the_post();
echo '<div class="grid__post-wrapper" id="post' . get_the_ID() . '">'; // grid-post-wrapper
echo '<h2 class="grid__preview-title"><a href="' . get_permalink() . '">' . get_the_title() . '</a></h2>';
echo '<div class="grid__preview-image-wrapper"><a class="grid__preview-image" href="' . get_permalink() . '">' . get_the_post_thumbnail() . '</a></div>';
echo '<div class="grid__the-excerpt">' . get_the_excerpt() . '</div>';
echo '<div class="btn-custom-wrapper"><a class="btn-custom-a btn-custom-a--dark" href="' . get_the_permalink() . '">Vorbeischauen</a></div>';
echo '</div>'; // end of grid-post-wrapper
endwhile;
endif;
wp_reset_postdata(); ?>
</div><!-- js-filter -->
// jQuery фильтрация
(function($) {
//$(document).ready(function(){
$(document).on('click', '.js-filter-item-wb', function(e){
e.preventDefault();
var category = $(this).data('category');
$.ajax({
url: wp_ajax.ajax_url,
data: { action: 'filter_wb', category: category },
type: 'post',
success: function(result) {
$('.js-filter').html(result);
console.log('i work')
},
error: function(result) {
console.warn(result);
}
});
});
//});
})(jQuery);
// php фильтр
add_action( 'wp_ajax_nopriv_filter_wb', 'filter_wb_ajax' );
add_action('wp_ajax_filter_wb', 'filter_wb_ajax' );
function filter_wb_ajax() {
$category = $_POST['category'];
$args = array (
'post_type' => 'wuerzburg',
'posts_per_page' => -1,
);
if(isset($category)) {
$args['category__in'] = array($category);
}
$query = new WP_Query($args);
if($query->have_posts()) :
while($query->have_posts()) : $query->the_post();
echo '<div class="grid__post-wrapper" id="post' . get_the_ID() . '">'; // grid-post-wrapper
echo '<h2 class="grid__preview-title"><a href="' . get_permalink() . '">' . get_the_title() . '</a></h2>';
echo '<div class="grid__preview-image-wrapper"><a class="grid__preview-image" href="' . get_permalink() . '">' . get_the_post_thumbnail() . '</a></div>';
//output testing
echo 'i should print';
//output testing
echo '<div class="grid__the-excerpt">' . get_the_excerpt() . '</div>';
echo '<div class="btn-custom-wrapper"><a class="btn-custom-a btn-custom-a--dark" href="' . get_the_permalink() . '">Vorbeischauen</a></div>';
echo '</div>'; // end of grid-post-wrapper
endwhile;
endif;
wp_reset_postdata();
print_r($_POST);wp_die();
}