Я хочу сделать фильтр с флажками в Wordpress. Чего я в первую очередь хочу добиться, так это протестировать его и отправить переменную с ajax на флажок в форме.
Вот форма с флажками:
<form method="post" id="filter">
<input type="checkbox" name="f" value="1" onchange="this.form.submit()" <?php if ($face =='1') {echo 'checked';}?>
<input type="checkbox" name="t" value="1" onchange="this.form.submit()" <?php if ($twitter=='1') {echo 'checked';}?>
<input type="hidden" value="myfilter">
</form>
Вот JavaScript:
jQuery(document).ready( function(){
jQuery('#content').on('submit', '#filter', function(e) {
e.preventDefault();
var test = jQuery('#test-btn').data( 'id' );
jQuery.ajax({
url : rml_obj.ajax_url,
type : 'post',
data : {
action : 'test_function',
security : rml_obj.check_nonce,
test_data : test
},
success : function( response ) {
alert (test);
jQuery('#result').html(response);
}
});
});
});
Вот функция в functions.php:
function test_function() {
check_ajax_referer( 'rml-nonce', 'security' );
$test_data = $_POST['test_data'];
echo $test_data;
die();
}
add_action('wp_ajax_test_function', 'test_function');
add_action('wp_ajax_nopriv_test_function', 'test_function');
Пока я просто пытаюсь это проверить. Поэтому, когда пользователь нажимает на флажок в форме, вызывается ajax. Но я застрял. Если я добавлю эту строку в действие action="<?php echo site_url() ?>/wp-admin/admin-ajax.php"
, то при отправке я застряну на URL-адресе ajax: admin-ajax.php. Если я удаляю строку действия из формы, то страница просто перезагружается.
Когда я использую щелчок по элементу, вместо отправки формы мне это удается. Но мне нужно, чтобы он работал при отправке формы, чтобы я мог реализовать фильтрацию, установив флажки в различных флажках.
Если кто-нибудь может сказать мне, что я делаю неправильно, я буду опираться на это и фактически отправлять значения-флажки из формы и выполнять запрос в функции для фильтрации данных.