Custom JSON feed rewrite

时间:2012-01-12 作者:englebip

我正试图以JSON格式实现一个来自事件自定义post类型的信息提要,用于FullCalendar实现,基本上如所述here. 我想更改的一件事是创建一个实际的WordPress提要来生成JSON输出,以避免查找wp负载的黑客行为。

代码如下:https://gist.github.com/1600619

如果转到示例,我会设法获得有效的输出。com?feed=json,但我认为querystring阻止了FullCalendar对其进行实际解析。我希望有一个合适的URL像例子饲料。com/feed/json可以解决这个问题,但我只得到了404。

1 个回复
SO网友:Stephen Harris

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

免责声明:上述代码已更改,以使事情更清楚,因此未经测试

结束

相关推荐

WordPress json API分类索引方法

本帖版次如下:wordpress json custom taxonomy problem如何编写使用自定义分类法获取类别的方法,类似于方法:get_category_index 核心json api控制器中?场景:我有一个名为-books的分类法,它有四个类别,我需要通过get\\u taxonomy\\u index输出这些类别。像这样的http://example.com//api/get_taxonomy_index/?dev=1