diff --git a/neuf-events-json-controller.php b/neuf-events-json-controller.php new file mode 100644 index 0000000..d0cc042 --- /dev/null +++ b/neuf-events-json-controller.php @@ -0,0 +1,48 @@ + '_neuf_events_starttime', + 'value' => date( 'U' , strtotime( '-8 hours' ) ), + 'compare' => '>', + 'type' => 'numeric' + ); + + $query = array( + 'post_type' => 'event', + 'meta_query' => array( $meta_query ), + 'posts_per_page' => 50, + 'orderby' => 'meta_value_num', + 'meta_key' => '_neuf_events_starttime', + 'order' => 'ASC' + ); + $custom_fields = array( + '_neuf_events_price', + '_neuf_events_starttime', + '_neuf_events_endtime', + '_neuf_events_venue', + '_neuf_events_bs_url', + '_neuf_events_fb_url', + ); + $json_api->query->custom_fields = implode(',', $custom_fields); + $events = $json_api->introspector->get_posts($query); + return $this->events_result($events); + } + protected function events_result($events) { + global $wp_query; + return array( + 'count' => count($events), + 'count_total' => (int) $wp_query->found_posts, + 'pages' => $wp_query->max_num_pages, + 'events' => $events + ); + } +} +?> diff --git a/neuf-events.php b/neuf-events.php index ea80d9a..41763b7 100644 --- a/neuf-events.php +++ b/neuf-events.php @@ -32,5 +32,17 @@ add_shortcode( 'neuf-events-program' , 'neuf_events_program' ); function neuf_events_i18n() { load_plugin_textdomain( 'neuf_event', false, dirname( plugin_basename( __FILE__ ) ) .'/languages' ); } +/* JSON API controller */ +function add_events_controller($controllers) { + $controllers[] = 'events'; + return $controllers; +} +add_filter('json_api_controllers', 'add_events_controller'); + +function set_events_controller_path() { + return WP_PLUGIN_DIR."/".dirname( plugin_basename( __FILE__ ))."/neuf-events-json-controller.php"; +} +add_filter('json_api_events_controller_path', 'set_events_controller_path'); + ?>