Всем доброго времени суток.
Допустим, что я собрал фильтр для wordpress записей.
Большая его часть отсюда:
dontforget.pro/wordpress/filtr-postov-po-proizvoln...
Теперь я хочу, чтобы этот фильтр работал на AJAX, а единственная похожая статья нашлась тут:
https://misha.blog/wordpress/filtryi-zapisey-i-tov...
Значит сейчас я имею код формы:
<form class="filter" action="/wp-admin/admin-ajax.php" method="get">
<span><label>Цена от: <!-- Интервал значений цены -->
<input type="number" name="price_ot">
</label>
<label>до:
<input type="number" name="price_do">
</label></span>
<label>
<select name="sort" onchange="this.form.submit()">
<option value=""> </option>
<option value="ASC">По цене (сначала дешевые)</option>
<option value="DESC">По цене (сначала дорогие)</option>
</select>
<button type="submit">Отфильтровать</button>
</form>
Перед выводимым кодом для применения фильтра размещаю вот эту бяку:
<?php if ($_GET && !empty($_GET)) {
my_filter();
} ?>
Чтобы бяка работала, в functions.php размещаю код:
function my_filter() {
$args = array();
$args[‘meta_query’] = array(‘relation’ => ‘AND’);
global $wp_query;
if ($_GET[‘price_ot’] != » || $_GET[‘price_do’] != ») {
if ($_GET[‘price_ot’] == ») $_GET[‘price_ot’] = 0;
if ($_GET[‘price_do’] == ») $_GET[‘price_do’] = 9999999;
$args[‘meta_query’][] = array(
‘key’ => ‘price’,
‘value’ => array( (int)$_GET[‘price_ot’], (int)$_GET[‘price_do’] ),
‘type’ => ‘numeric’,
‘compare’ => ‘BETWEEN’
);
}
if ($_GET[‘sort’] != ») {
$args = array(
‘meta_key’ => ‘price’,
‘orderby’ => ‘meta_value_num’,
‘order’ => $_GET[‘sort’]
);
}
query_posts(array_merge($args,$wp_query->query));
die();
}
add_action('wp_ajax_myfilter', 'my_filter');
add_action('wp_ajax_nopriv_myfilter', 'my_filter');
Вопрос, что сделать с пунктом 2, где у Миши описывается jQuery-скрипт?
Добавить его в myfilter.js?
И могли бы вы помочь мне исправить его скрипт под мой код?
jQuery(function($){
$('.filter').submit(function(){
var filter = $(this);
$.ajax({
url:ajaxurl,
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;
});
});
Теперь, при попытке применить фильтр меня редиректит на /wp-admin/admin-ajax.php
Такую же проблему описывает человек у него в комментариях, но там ему советуют добавить в скрипт return false;
Сам я хз куда надо добавить, но в скрипте return false; уже есть, так что я предполагаю, что он уже сам добавил.
Что делать дальше, ребят?