WordPress的自定义帖子类型ajax调用为空

时间:2018-07-02 15:47:40

标签: php ajax wordpress

我有一个Wordpress自定义帖子类型,可以使用AJAX调用对其进行过滤。这是一个儿童足球队的比赛结果,最初是在页面中填写最新赛季的信息。我重新使用AJAX PHP函数最初填充了页面,并且效果很好。

当我选择另一个季节时,要显示该季节的结果,则会通过$ _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 :(得分:1)

经过近三个星期的调查,跑步时我发现了它!

该站点是多站点,并且CPT存在于除主站点之外的所有站点上。通过AJAX调用时,get_current_blog_id()返回1,因此未返回任何结果,因为站点1上不存在任何结果。我现在将站点ID传递给AJAX调用,并使用GET进行检索,嘿,现在它可以工作了。当该函数不是AJAX调用时,会传递正确的站点ID,这就是为什么以这种方式调用时会起作用的原因。

$.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'];
}