Set up Ryan’s library.
Create a client.
Retrieve the data.
include('eventbrite-api/Eventbrite.php');
$eb_client = new Eventbrite($api_tokens);
$these_events = $eb_client->user_list_events(array('event_statuses'=>'live,started'));
Save it as JSON:
$json_events = json_encode($these_events);
file_put_contents(EVENTBRITE_CACHE . 'events.json', $json_events);
Schedule with cron (a few times an hour).
Unformatted JSON isn’t easy for humans to parse:
{"events":[{"event":{"box_header_text_color":"005580","locale":"en_US","link_color":"EE6600","box_background_color":"FFFFFF","timezone":"Europe\/London","box_border_color":"D5D5D3","logo":"https:\/\/cdn.evbuc.com\/images\/16359393\/139609962402\/1\/logo.jpg","organizer":{"url":"http:\/\/www.eventbrite.com\/o\/getset-for-growth-london-8063154735","description":"GetSet For Growth is an innovative and highly successful service providing world-class advice to businesses …
Use a JSON visualiser, for example:
array.include-once.org
Define a shortcode in the plugin:
add_shortcode('events', 'eventbrite_plus_expand_shortcode');
Use the shortcode to retrieve a list of events
and then display all of them:
[events username="username@eventbrite.com"]
We need to make a theme-specific function
to display each event in the list:
function eventbrite_plus_display_event ($this_event) {
$html = <<<ENDS
<div class="row-fluid event_block">
<div class="span3 event_type">
{$this_event['image']}
</div>
<div class="span6 event_content">
<p><span class='event_title'>{$this_event['title']}</span></p>
<p>{$this_event['content']}</p>
</div>
<div class="span3 event_cta">
<p class='event_date_time'><span class='event_date'>{$this_event['date']}</span><br />
<span class='event_time'>{$this_event['time']}</span></p>
<p class='event_location'>{$this_event['location']}</p>
<p class='event_button'>{$this_event['button']}</p>
</div>
</div>
ENDS;
return $html;
}
Define the manual event shortcode in the plugin:
add_shortcode('event', 'eventbrite_plus_expand_shortcode');
Use the shortcode to add as many events as we want:
[event date="13/6/2016" title="Cam WP" location="Boat House"]Great event…[/event]
[event date="21/6/2016" title="PHP Cam" location="Novi"]Another great event…[/event]
Finally, we can mix-and-match Eventbrite and manual shortcodes:
[events username="username@eventbrite.com"]
[event date="16/6/2016" title="NatWest…" location="London"]Ways to Grow your Business…[/event]
The combined date-sorted list will be displayed wherever the first shortcode (of either kind) occurs on the page.