Фильтры Ajax не обновляются при первой загрузке на основе параметров URL-адреса.Jquery

Программирование на jquery
Ответить
Гость
 Фильтры Ajax не обновляются при первой загрузке на основе параметров URL-адреса.

Сообщение Гость »


add_action('wp_ajax_nopriv_filter', 'team_filter_ajax'); add_action('wp_ajax_filter', 'team_filter_ajax'); функция team_filter_ajax() { $category = isset($_POST['category']) ? sanitize_text_field($_POST['category']): 'все'; $search_term = sanitize_text_field($_POST['search_term']); print_r ($ категория); $args = массив( 'post_type' => 'участник', 'posts_per_page' => -1, 'post_status' => 'опубликовать', 'orderby' => 'menu_order', ); // Создаем пустой массив Tax_query $tax_query = массив( 'отношение' => 'И', ); if ( $category !== 'все' ) { $tax_query[] = массив( 'taxonomy' => 'members_category', 'поле' => 'слизняк', 'термины' => $категория, ); } если ($search_term) { $args = массив( 'post_type' => 'member', // Настройте это в соответствии с вашим типом сообщения 'posts_per_page' => -1, 's' => $search_term, ); } // Добавляем Tax_query к основным $args если ( ! пусто($tax_query)) { $args['tax_query'] = $tax_query; } $query = новый WP_Query($args); $ответ = ''; если ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); $response .= render_template('template-parts/parts/member-item.php'); } } еще { // Члены не найдены $response = 'Участники не найдены.'; } wp_reset_postdata(); эхо $ответ; умереть(); } Мне нужно заставить этот фильтр работать на основе параметров, отправленных в URL, например: mydomain/pagename/?cat=category-name, но для категории всегда «все», это означает, что $_POST ['category'] пуст при первой загрузке страницы. После того, как я выберу из раскрывающегося списка, эта переменная $category изменится в зависимости от имени параметра. Таким образом, фильтр всегда показывает всех членов команды при первой загрузке страницы. За исключением этого, все работает и файлер работает как положено:

Вот мой код jquery
var $ = require('jquery'); require('webpack-jquery-ui/selectmenu'); $(функция() { initAjaxПараметры(); initCategorySelect(); ФильтрКоманда(); аяксфильтр(); }); $.urlParam = функция(имя) { var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); если (результаты == ноль) { вернуть ноль; } еще { вернуть decodeURI(результаты[1]) || 0; } }; пусть параметры = {}; пусть сообщенияXhr = ноль; функция filterTeam() { // Инициализируем виджет меню выбора $('#category').selectmenu({ изменение: функция (событие, пользовательский интерфейс) { категория вар = ui.item.element.data('категория'); // Получаем атрибут data-category var searchTerm = $('#search-member').val(); // Получаем поисковый запрос пусть URL = ''; если (категория) { URL = URL + '? Cat =' + категория; } ajaxFilter (категория, searchTerm); window.history.pushState('следующий', document.title, URL); } }); // Добавляем прослушиватель событий для поля ввода поиска $('#search-member').on('input', function () { вар searchTerm = $(this).val(); var Category = $('.filter-wrap > select').find('опция: выбрано').attr('категория данных'); ajaxFilter (категория, searchTerm); }); } функция initAjaxParameters() { параметры.действие = 'team_filter_ajax'; параметры.категория = $.urlParam('кот'); // Устанавливаем начальную категорию по URL // Устанавливаем выбранную опцию в меню выбора $('#category').val(parameters.category); если (parameters.category) { $('#category .ui-menu-item').filter(function () { console.log('здесь'); return $(this).data("категория") == параметры.категория; }).клик(); // Используйте .click() для запуска события клика } } функция initCategorySelect() { $('#category').selectmenu({ изменение: функция(){ параметры.категория = $(this).val(); аяксфильтр(); } }); } функция pushHistory() { пусть url = window.location.href.split('?')[0]; если (параметры.категория) { URL = URL + '?cat=' + параметры.категория; } window.history.pushState('следующий', document.title, URL); } функция ajaxFilter(category, searchTerm) { НажмитеИстория(); $('.ajax-loader').removeClass('opacity-0'); если (сообщенияXhr) { сообщенияXhr.abort(); } $.ajax({ URL: ajax_params.ajaxurl, данные: { действие: 'фильтр', категория: категория, search_term: searchTerm }, тип: «пост», успех: функция (результат) { $('.team-section__wrap .inner').html(результат); $('.ajax-loader').addClass('opacity-0'); }, ошибка: функция(){ console.log('Что-то пошло не так!'); } }); }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»