我有一个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
}
});
我在另一个站点上也有类似的工作,以便进行简单的求职。我一定在做错什么,对吗?
谢谢
答案 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'];
}