AJAX请求将查询需要显示的日期。使用惰性获取集,如果您从月视图切换到周视图或日视图,则无需再提出请求,因为它不需要这样做。这在完整日历中列出documentation.
至于使用这种方法,see this question 关于如何获取管理ajax。php url正确。
接下来,需要适当地设置fullcalendar源,然后定义ajax操作。以下内容摘自Event Organiser
插件。因此,请随意四处打探细节(您需要frontend.js
在js文件夹中event-organiser-ajax.php
在includes文件夹中)。
The Event source
jQuery(".eo-fullcalendar").fullCalendar({
lazyFetching: \'true\',
events: function(start, end, callback) {
jQuery.ajax({
url: MYAJAX.url+"?action=mycalendaraction",
dataType: \'JSON\',
data: {
start: jQuery.fullCalendar.formatDate(start, \'yyyy-MM-dd\'),
end:jQuery.fullCalendar.formatDate(end, \'yyyy-MM-dd\')
},
success: function(data) {
callback(data);
}
})
}
});
默认情况下,开始日期和结束日期为时间戳,但我的查询需要YY-MM-DD格式。这个
MYAJAX.url
是管理ajax。php url,如链接问题中所述,通过使用
wp_localize_script
.
最后,您需要添加适当的操作来处理请求:
if ( isset( $_REQUEST[\'action\'] ) AND \'mycalendaraction\' === $_REQUEST[\'action\'] ) {
//For logged in users.
do_action( "wp_ajax_{$_REQUEST[\'action\']}" );
// For non-logged in users:
do_action( "wp_ajax_nopriv_{$_REQUEST[\'action\']}" );
}
add_action( \'wp_ajax_mycalendaraction\', \'get_my_events\' );
add_action( \'wp_ajax_nopriv_mycalendaraction\', \'get_my_events\' );
function get_my_events() {
//$_GET[\'start\'] the start date
//$_GET[\'end\'] the end date
//perform query
//Let $events_array be the array of events with each event being an appropriate array (for instance with \'title\',\'start\',\'end\',\'allDay\' keys - see fullcalendar documentation).
//Echo result and exit
echo json_encode($event_sarray);
exit;
}
在上面,我假设日历是针对登录和未登录用户的(因此这两个操作)。您还需要执行一些nonce检查(请参阅链接的问题)。注意,该操作与“事件源”部分的ajax url中设置的操作相同。
“事件对象”下的fullcalendar文档中给出了每个事件数组应包含的内容。在javascript端,关联数组(即事件)作为对象接收,其值由数组中的值给定:即。event[\'key\']
成为event.key
免责声明:上述代码已更改,以使事情更清楚,因此未经测试