$stocks_Query = new WP_Query( array(
'post_type' => 'news-stocks',
'category_name' => '',
'publish' => true,
'orderby' => 'date',
'order' => 'DESC',
));
?>
<section class="blog_pic-two">
<div class="blog_left-side">
<div class="grid">
<?php if ($stocks_Query ->have_posts()) : while($stocks_Query ->have_posts()) : $stocks_Query ->the_post(); ?>
<div class="grid_wrap">
<figure class="effect-lily">
<img src="<?= get_the_post_thumbnail_url() ?>" alt="">
</figure>
<h2><?= the_title() ?></h2>
<p><?= the_excerpt() ?></p>
<a href="<?= the_permalink() ?>">Читать</a>
</div>
<?php endwhile; endif; ?>
</div>
</div>
</section>
<form action="<?php echo admin_url('admin-ajax.php')?>" method="POST" id="filter">
<input type="radio" id="all" value="" name="filter" checked>
<label for="all"></label>
<span>Все</span>
<input type="radio" id="stocks" value="stocks" name="filter">
<label for="stocks"></label>
<span>Акции</span>
<input type="radio" id="news" value="news" name="filter">
<label for="news"></label>
<span>Новости</span>
<button>Применить фильтр</button>
</form>
jQuery(function ($) {
$('#filterasd').submit(function () {
var filter = $('#filter');
$.ajax({
url: filter.attr('action'), // обработчик
data: filter.serialize(), // данные
type: filter.attr('method'), // тип запроса
beforeSend: function (xhr) {
filter.find('button').text('Загружаю...'); // изменяем текст кнопки
},
success: function (data) {
filter.find('button').text('Применить фильтр'); // возвращаем текст кнопки
$('#response').html(data);
}
});
return false;
});
});
function posts_filters(){
$args = array(
'order' => $_POST['filter']
);
if( isset( $_POST['filter'] ) )
$args['tax_query'] = array(
array(
'taxonomy' => 'news-stocks',
'field' => 'id',
'terms' => $_POST['filter']
)
);
die();
}
add_action('wp_ajax_customfilter', 'posts_filters');
add_action('wp_ajax_nopriv_customfilter', 'posts_filters');
ничего не происходит
$('#filterasd')
posts_filters
вы просто формируете массив с параметрами, но не делаете запрос на получение записей. WP_Query#response
.function posts_filters(){
$args = array(
'post_type' => 'news-stocks',
'category_name' => '',
'publish' => true,
'orderby' => 'date',
'order' => 'DESC',
);
if( isset( $_POST['filter'] ) )
$args = array(
'post_type' => 'news-stocks',
'category_name' => $_POST['filter'],
'publish' => true,
'orderby' => 'date',
'order' => 'DESC',
);
$query = new WP_Query( $args );
if( $query->have_posts() ) :
while( $query->have_posts() ): $query->the_post();
get_template_part( 'template-parts/template', 'news' );
endwhile;
wp_reset_postdata();
else :
echo 'Записей не найдено';
endif;
die();
}
add_action('wp_ajax_myfilter', 'posts_filters');
add_action('wp_ajax_nopriv_myfilter', 'posts_filters');
<form action="<?php echo admin_url('admin-ajax.php')?>" method="POST" id="filter">
<input type="radio" id="all" value="" name="filter" checked>
<label for="all"></label>
<span>Все</span>
<input type="radio" id="stocks" value="stocks" name="filter">
<label for="stocks"></label>
<span>Акции</span>
<input type="radio" id="news" value="news" name="filter">
<label for="news"></label>
<span>Новости</span>
<button>Применить фильтр</button>
<input type="hidden" name="action" value="myfilter">
</form>
jQuery(function ($) {
$('#filter').submit(function () {
var filter = $('#filter');
$.ajax({
url: filter.attr('action'), // обработчик
data: filter.serialize(), // данные
type: filter.attr('method'), // тип запроса
beforeSend: function (xhr) {
filter.find('button').text('Загружаю...'); // изменяем текст кнопки
console.log('wait...');
},
success: function (data) {
filter.find('button').text('Применить фильтр'); // возвращает текст кнопки
$('.grid').html(data);
console.log('ok');
}
});
return false;
});