Intereting Posts
Изменение структуры html и создание пользовательских меню Ограниченные регистрации или удаление возможности редактирования пароля / электронной почты Отображение переменной цены woocommerce (обычная цена и цена продажи) Изменения в моей дочерней теме из customizer не появляются в style.css? Проблема с попыткой отобразить заголовок в сообщениях Вставка файла javascript в шаблон темы? Разрешить пользователям выбирать категории Как отключить profile.php для пользователей? Получить сообщения из сети (Multisite) Добавить тег короткого кода в виджет / боковую панель Созданные WordPress ссылки – menus и home_url () – не используя https, несмотря на настройки Получать сообщения по пользовательской таксономии и настраиваемому типу сообщений Добавить пользовательское поле в поле комментариев ПОСЛЕ текстовой области НО ПЕРЕД отправкой кнопки Оптимизация запросов к базе данных с помощью нового WP_Query Функция многократного перезаписи / перезаписи для языков

Как получить дочерние сообщения в пользовательском типе сообщений ajax?

Я получаю сообщения и фильтрует ayahs по тегам. Я получаю все сообщения. Это хорошо работает. Но когда я перехожу на родительскую страницу сообщения, мне нужно получить только дочерние сообщения и отфильтровать их. Я использую 'post_parent' => $ post-> ID в запросе, но это не работает в функции. Если я использую запрос на странице, где я хочу его получить, он хорошо печатает.

/*Ajax Filter*/ //Get Applications Filters function get_applications_filters() { $args = array( 'taxonomy' => array( 'products_tags')); $terms = get_terms( $args, $deprecated ); $filters_html = false; if( $terms ): $filters_html = '<ul>'; foreach( $terms as $term ) { $term_id = $term->term_id; $term_name = $term->name; $filters_html .= '<li class="term_id_'.$term_id.'">'.$term_name.'<input type="checkbox" name="filter_applications[]" value="'.$term_id.'"></li>'; } $filters_html .= '<li class="clear-all">Reset Filter</li>'; $filters_html .= '</ul>'; return $filters_html; endif; } //Add Ajax Actions add_action('wp_ajax_applications_filter', 'ajax_applications_filter'); add_action('wp_ajax_nopriv_applications_filter', 'ajax_applications_filter'); //Construct Loop & Results function ajax_applications_filter() { $query_data = $_GET; $applications_terms = ($query_data['applications']) ? explode(',',$query_data['applications']) : false; $tax_query = ($applications_terms) ? array( array( 'taxonomy' => 'products_tags', 'field' => 'id', 'terms' => $applications_terms ) ) : false; $search_value = ($query_data['search']) ? $query_data['search'] : false; //$paged = (isset($query_data['paged']) ) ? intval($query_data['paged']) : 1; $products_args = array( 'post_type' => 'products', 's' => $search_value, 'posts_per_page' => -1, 'tax_query' => $tax_query, 'post_parent' => $post->ID, //'paged' => $paged ); $products_loop = new WP_Query($products_args); if( $products_loop->have_posts() ): while( $products_loop->have_posts() ): $products_loop->the_post(); get_template_part('template-parts/content-products-archive'); endwhile; else: get_template_part('content-none'); endif; wp_reset_query(); die(); } 

AJAX

 //Applications Ajax Filtering jQuery(function($) { //Load posts on page load applications_get_posts(); //If list item is clicked, trigger input change and add css class $('#applications-filter li').live('click', function(){ var input = $(this).find('input'); if ( $(this).attr('class') == 'clear-all' ) { $('#applications-filter li').removeClass('selected').find('input').prop('checked',false); applications_get_posts(); } else if (input.is(':checked')) { input.prop('checked', false); $(this).removeClass('selected'); } else { input.prop('checked', true); $(this).addClass('selected'); } input.trigger("change"); }); //If input is changed, load posts $('#applications-filter input').live('change', function(){ applications_get_posts(); //Load Posts }); //Find Selected Applications function getSelectedApplications() { var applications = []; $("#applications-filter li input:checked").each(function() { var val = $(this).val(); applications.push(val); }); return applications; } //Fire ajax request when typing in search $('#applications-search input.text-search').live('keyup', function(e){ if( e.keyCode == 27 ) { $(this).val(''); } applications_get_posts(); //Load Posts }); $('#submit-search').live('click', function(e){ e.preventDefault(); applications_get_posts(); //Load Posts }); //Get Search Form Values function getSearchValue() { var searchValue = $('#applications-search input.text-search').val(); return searchValue; } //If pagination is clicked, load correct posts $('.applications-filter-navigation a').live('click', function(e){ e.preventDefault(); var url = $(this).attr('href'); var paged = url.split('&paged='); applications_get_posts(paged[1]); //Load Posts (feed in paged value) }); //Main ajax function function applications_get_posts(paged) { var paged_value = paged; var ajax_url = ajax_applications_params.ajax_url; $.ajax({ type: 'GET', url: ajax_url, data: { action: 'applications_filter', applications: getSelectedApplications, search: getSearchValue(), paged: paged_value }, beforeSend: function () { }, success: function(data) { //Hide loader here $('#applications-results').html(data); $('#applications-results .wrap').matchHeight({ byRow: true }); }, error: function() { $("#applications-results").html('<p>There has been an error</p>'); } }); } }); 

Solutions Collecting From Web of "Как получить дочерние сообщения в пользовательском типе сообщений ajax?"

Чтобы получить данные о записи, вы должны сами отправить данные.

В вашем JavaScript- коде вы не отправили сообщение id .

Обновите свой код следующим образом:

 data:{ action: "applications_filter", post_id: current_post_id, //current_post_id should either parsed from DOM or you can write your ajax in PHP file } 

Вам необходимо отправить post_id перед использованием в php-файле.

Затем вы можете получить через GET

 function ajax_applications_filter(){ $post_id = $_GET['post_id']; //Now set post_parent, it will be work $products_args = array( 'post_type' => 'products', 's' => $search_value, 'posts_per_page' => -1, 'tax_query' => $tax_query, 'post_parent' => $post_id //'paged' => $paged ); }