Intereting Posts
Сброс CSS для переднего конца плагина? Как настроить область рабочей области / администратора в настраиваемом типе сообщений без плагинов? Как отключить регистрацию и сбросить пароль с панели администратора WordPress? Космополитан, как викторина Создание страницы лечения, что я использую? Ограничить количество загруженных вложений определенного контекста OAuth1 пустая аутентификация в / wp-json Сопоставление карты с WP – предложения по исправлению? нормально ли удалять по умолчанию родительскую таблицу стилей из пользовательских шаблонов страниц в дочерней теме? Пользовательское поле в заголовке пытаясь получить изображение категории продукта в woo-coomerce Штрих-код WordPress в содержимом, вывод в боковой панели? Сделать URL-адрес страницы архива архива должен быть подкаталогом URL-адреса настраиваемого почтового адреса Как отправить пользователю BuddyPress уведомление о событии плагина? Как получить список популярных тегов по просмотрам сообщений?

изменяя цикл несколько раз с аргументами, переданными через ajax на wp_query

Я пытаюсь создать фильтр сообщений для своего сайта.

jQuery(document).ready(function($) { $("input[id='brand']").click(function() { var key; var value; var checked; var check = $(this).prop("checked"); if (check) { key = $(this).attr('id'); value = $(this).val(); checked = 'true'; } else { checked = 'false'; } var ajax_url = 'http://localhost/wordpress/wp-admin/admin-ajax.php'; var data = { 'action': 'filter_posts_by_meta', 'checked': checked, 'key': key, 'value': value, }; $.ajax({ method: "POST", url: ajax_url, data: data, success: function(result) { jQuery('#sortid').html(result); }, error: function(xhr, status, error) { // console.log(error); } }); }); }); 

скрипт php:

 function ajax_filter_posts_by_meta () { global $wp_query, $wp_the_query; //$compare= isset($_POST['compare']) ? $_POST['compare'] : ''; $key = isset($_POST['key']) ? $_POST['key'] : ''; $value = isset($_POST['value']) ? $_POST['value'] : ''; $checked = isset ($_POST['checked']) ? $_POST['checked'] : die(); //if ($checked != 'true'){} $filterargs= array(array($qv) , array( array( 'key' => $key, // 'compare' => $compare, 'value' => $value, ), ) , ); $wp_query= new Wp_Query($filterargs); $qv=$wp_query->query_vars; while(have_posts()) : the_post(); the_title(); wp_reset_postdata(); endwhile; die(); } 

Проблема, с которой я сталкиваюсь, заключается в том, что запрос продолжает сбрасываться каждый раз, когда пользователь нажимает на поле ввода с маркой id. Я хочу сделать это, чтобы изменить запрос и повторно запустить его. На данный момент я не написал код для «unmodify» кода, когда флажок снят.

Вы можете использовать wp_localize_script чтобы сохранить текущий запрос в переменной JS. Затем вы должны отправить его с помощью ajax и изменить его и отправить обратно, чтобы иметь доступ к нему в будущем.

 global $wp_query; wp_localize_script( 'ajax-pagination', 'ajaxpagination', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'query_vars' => json_encode( $wp_query->query ) )); 

Эта статья должна помочь вам справиться с этой проблемой. В особенности с query_vars есть довольно хорошее объяснение.