Advertisement
Guest User

em custom shortcode

a guest
May 23rd, 2012
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. function em_my_group_shortcode( $args = array(), $format='' ){
  2.  
  3. $args['limit'] = (!empty($args['limit']) && is_numeric($args['limit']) )? $args['limit'] : false;
  4. $args['page'] = (!empty($args['page']) && is_numeric($args['page']) )? $args['page'] : 1;
  5. $args['page'] = (!empty($_REQUEST['page']) && is_numeric($_REQUEST['page']) )? $_REQUEST['page'] : $args['page'];
  6. $args['offset'] = ($args['page']-1) * $args['limit'];
  7. $args['orderby'] = 'event_start_date,event_start_time,event_name'; // must override this to display events in right cronology.
  8. if( !empty($format) ){ $args['format'] = html_entity_decode($format); } //accept formats
  9. //Reset some vars for counting events and displaying set arrays of events
  10. $atts = (array) $args;
  11. $atts['pagination'] = false;
  12. $atts['limit'] = false;
  13. $atts['page'] = false;
  14. $atts['offset'] = false;
  15. //decide what form of dates to show
  16. $EM_Events = EM_Events::get($args);
  17. $events_count = EM_Events::count($atts);
  18. ob_start();
  19. switch ( $args['mode'] ){
  20.  
  21. case 'daily':
  22. $format = (!empty($args['date_format'])) ? $args['date_format']:get_option('date_format');
  23. $events_dates = array();
  24. foreach($EM_Events as $EM_Event){
  25. $events_dates[strtotime($EM_Event->start_date)][] = $EM_Event;
  26. }
  27. foreach ($events_dates as $event_day_ts => $events){
  28. echo '<h2>'.date_i18n($format,$event_day_ts).'</h2>';
  29. echo EM_Events::output($events, $atts);
  30. }
  31. break;
  32.  
  33. }
  34.  
  35. if( !empty($args['limit']) && $events_count > $args['limit'] && (!empty($args['pagination']) || !isset($args['pagination'])) ){
  36. //Show the pagination links (unless there's less than $limit events)
  37. $page_link_template = add_query_arg(array('page'=>'%PAGE%'));
  38. echo em_paginate( $page_link_template, $events_count, $args['limit'], $args['page']);
  39. }
  40.  
  41. return ob_get_clean();
  42.  
  43. }
  44. add_shortcode ( 'group_events', 'em_my_group_shortcode');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement