Wordpress нестандартный тип записи ajax call - PullRequest
0 голосов
/ 02 июля 2018

У меня есть пользовательский тип записи Wordpress, который можно отфильтровать с помощью вызова AJAX. Это результаты матчей детской футбольной команды, которые изначально заполняют страницу самым последним сезоном. Я повторно использую функцию PHP AJAX для первоначального заполнения страницы, и это прекрасно работает.

Когда я выбираю другой сезон, чтобы показать результаты этого сезона, правильный сезон пропускается и восстанавливается через $ _GET ['season'], но результаты не возвращаются. Сезон - это поле с расширенными пользовательскими полями.

Это мои аргументы в пользу WP_Query, который отлично работает, когда не AJAX.

$args = array(
  'post_type' => 'results',
  'meta_key' => 'date',
  'meta_query'=> array(
    array(
      'key' => 'result_season',
      'value' => $show_season,
      'compare' => '='
    )
  ),
'posts_per_page'    => -1,
'orderby' => array( 'meta_value_num' => 'DESC', 'post_date' => 'DESC' )
);

$wp_query = new WP_Query( $args );

Это мой AJAX-вызов, и он проходит правильный сезон.

$.ajax({
  url:jQuery(this).data('action'),          
  data:{ action: jQuery(this).data('filter'), season: jQuery(this).data('season') },
  beforeSend:function(xhr){
  },
  success:function(data){
    jQuery('#season-results').html(data); // insert data
  }
});

У меня есть нечто похожее, работающее на другом сайте для простого поиска работы. Я ДОЛЖЕН делать что-то не так, не так ли?

Спасибо

1 Ответ

0 голосов
/ 03 июля 2018

После почти 3-х недель исследования это пришло ко мне во время бега!

Сайт является мультисайтовым, и CPT существует на всех сайтах, кроме основного. get_current_blog_id () возвращал 1 при вызове через AJAX, и поэтому никаких результатов не было возвращено, так как на сайте 1 не было никаких результатов. Теперь я передаю идентификатор сайта в вызов AJAX и извлекаю его с помощью GET, и эй, прежде всего, он работает сейчас. Правильный идентификатор сайта передается, когда функция не является вызовом AJAX, поэтому она работала при таком вызове.

$.ajax({
        url:jQuery(this).data('action'),            
        data:{ action: jQuery(this).data('filter'), season: jQuery(this).data('season'), site: jQuery(this).data('site') },
        beforeSend:function(xhr){
            //jQuery('#map-overlay').addClass('active');
        },
        success:function(data){
            jQuery('#season-results').html(data); // insert data
            //jQuery('#map-overlay').removeClass('active');
        }
    });


$current_blog_id = get_current_blog_id();

if ( isset($_GET['site']) ) {   
    $current_blog_id = $_GET['site'];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...