Below, you’ll find a detailed guide on how to add the Wp Event Aggregator Shortcode to your WordPress website, including its parameters, examples, and PHP function code. Additionally, we’ll assist you with common issues that might cause the Wp Event Aggregator Plugin shortcode not to show or not to work correctly.
Before starting, here is an overview of the Wp Event Aggregator Plugin and the shortcodes it provides:

"WP Event Aggregator is a comprehensive plugin for importing events from various platforms such as Eventbrite, Meetup, and any iCal events into your WordPress site."
- [wp_events]
Wp Event Aggregator [wp_events] Shortcode
The wp-event-aggregator shortcode allows users to display a list of events on their WordPress site. It supports various attributes to customize the output, such as the number of events per page, specific categories, and date ranges.
Shortcode: [wp_events]
Parameters
Here is a list of all possible wp_events shortcode parameters and attributes:
col
– determines the number of columns in the layoutlayout
– sets the style of the event listingposts_per_page
– sets the number of events displayed per pagecategory
– filters events by specified categoriespast_events
– allows display of past eventsorder
– sets the order of events, ascending or descendingorderby
– determines the parameter for ordering eventsstart_date
– filters events that start after the specified dateend_date
– filters events that end before the specified date
Examples and Usage
Basic example – Display events with default settings
[wp_events]
Advanced examples
Display events from specific categories (for example, “cat1” and “cat2”).
[wp_events category="cat1,cat2"]
Display 12 events per page in two columns.
[wp_events posts_per_page='12' col='2']
Show past events in descending order.
[wp_events past_events="yes" order="desc"]
Display events happening between specific dates (for example, between 1st January 2022 and 31st December 2022).
[wp_events start_date="2022-01-01" end_date="2022-12-31"]
Show events in a specific layout (for example, “style2”).
[wp_events layout="style2"]
Customize the order of events by a specific parameter (for example, “event_start_date”).
[wp_events orderby="event_start_date"]
PHP Function Code
In case you have difficulties debugging what causing issues with [wp_events]
shortcode, check below the related PHP functions code.
Shortcode line:
add_shortcode('wp_events', array( $this, 'wp_events_archive' ) );
Shortcode PHP function:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 | function wp_events_archive( $atts = array () ){ //[wp_events col='2' layout="style2" posts_per_page='12' category="cat1,cat2" past_events="yes" order="desc" orderby="" start_date="" end_date="" ] $current_date = current_time( 'timestamp' ); $paged = ( get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1 ); if ( is_front_page() ){ $paged = ( get_query_var( 'page' ) ? get_query_var( 'page' ) : 1 ); } $eve_args = array ( 'post_type' => 'wp_events' , 'post_status' => 'publish' , 'meta_key' => 'start_ts' , 'paged' => $paged , ); // post per page. if ( isset( $atts [ 'posts_per_page' ] ) && $atts [ 'posts_per_page' ] != '' && is_numeric ( $atts [ 'posts_per_page' ] ) ){ $eve_args [ 'posts_per_page' ] = $atts [ 'posts_per_page' ]; } // Past Events if ( ( isset( $atts [ 'start_date' ] ) && $atts [ 'start_date' ] != '' ) || ( isset( $atts [ 'end_date' ] ) && $atts [ 'end_date' ] != '' ) ){ $start_date_str = $end_date_str = '' ; if ( isset( $atts [ 'start_date' ] ) && $atts [ 'start_date' ] != '' ){ try { $start_date_str = strtotime ( sanitize_text_field( $atts [ 'start_date' ] )); } catch (Exception $e ) { $start_date_str = '' ; } } if ( isset( $atts [ 'end_date' ] ) && $atts [ 'end_date' ] != '' ){ try { $end_date_str = strtotime ( sanitize_text_field( $atts [ 'end_date' ] )); } catch (Exception $e ) { $end_date_str = '' ; } } if ( $start_date_str != '' && $end_date_str != '' ){ $eve_args [ 'meta_query' ] = array ( 'relation' => 'AND' , array ( 'key' => 'end_ts' , 'compare' => '>=' , 'value' => $start_date_str , ), array ( 'key' => 'end_ts' , 'compare' => '<=' , 'value' => $end_date_str , ), ); } elseif ( $start_date_str != '' ){ $eve_args [ 'meta_query' ] = array ( array ( 'key' => 'end_ts' , 'compare' => '>=' , 'value' => $start_date_str , ) ); } elseif ( $end_date_str != '' ){ $eve_args [ 'meta_query' ] = array ( 'relation' => 'AND' , array ( 'key' => 'end_ts' , 'compare' => '>=' , 'value' => strtotime ( date ( 'Y-m-d' ) ), ), array ( 'key' => 'end_ts' , 'compare' => '<=' , 'value' => $end_date_str , ), ); } } else { if ( isset( $atts [ 'past_events' ] ) && $atts [ 'past_events' ] == true ){ $atts [ 'past_events' ] = "yes" ; } if ( isset( $atts [ 'past_events' ] ) && $atts [ 'past_events' ] == 'yes' ){ $eve_args [ 'meta_query' ] = array ( array ( 'key' => 'end_ts' , 'compare' => '<=' , 'value' => $current_date , ) ); } else { $eve_args [ 'meta_query' ] = array ( array ( 'key' => 'end_ts' , 'compare' => '>=' , 'value' => $current_date , ) ); } } if ( isset( $atts [ 'category' ] ) && $atts [ 'category' ] != '' ){ $categories = explode ( ',' , $atts [ 'category' ] ); $tax_field = 'slug' ; if ( is_numeric ( implode( '' , $categories ) ) ){ $tax_field = 'term_id' ; } if ( ! empty ( $categories ) ){ $eve_args [ 'tax_query' ] = array ( array ( 'taxonomy' => $this ->event_category, 'field' => $tax_field , 'terms' => $categories , ) ); } } // Order by if ( isset( $atts [ 'orderby' ] ) && $atts [ 'orderby' ] != '' ){ if ( $atts [ 'orderby' ] == 'event_start_date' || $atts [ 'orderby' ] == 'event_end_date' ){ $eve_args [ 'orderby' ] = 'meta_value' ; } else { $eve_args [ 'orderby' ] = sanitize_text_field( $atts [ 'orderby' ] ); } } else { $eve_args [ 'orderby' ] = 'meta_value' ; } // Order if ( isset( $atts [ 'order' ] ) && $atts [ 'order' ] != '' ){ if ( strtoupper ( $atts [ 'order' ] ) == 'DESC' || strtoupper ( $atts [ 'order' ] ) == 'ASC' ){ $eve_args [ 'order' ] = sanitize_text_field( $atts [ 'order' ] ); } } else { if ( isset( $atts [ 'past_events' ] ) && $atts [ 'past_events' ] == true ){ $atts [ 'past_events' ] = "yes" ; } if ( isset( $atts [ 'past_events' ] ) && $atts [ 'past_events' ] == 'yes' && $eve_args [ 'orderby' ] == 'meta_value' ){ $eve_args [ 'order' ] = 'DESC' ; } else { $eve_args [ 'order' ] = 'ASC' ; } } $col = 2; $css_class = 'col-wpea-md-6' ; if ( isset( $atts [ 'col' ] ) && $atts [ 'col' ] != '' && is_numeric ( $atts [ 'col' ] ) ){ $col = $atts [ 'col' ]; switch ( $col ) { case '1' : $css_class = 'col-wpea-md-12' ; break ; case '2' : $css_class = 'col-wpea-md-6' ; break ; case '3' : $css_class = 'col-wpea-md-4' ; break ; case '4' : $css_class = 'col-wpea-md-3' ; break ; default : $css_class = 'col-wpea-md-4' ; break ; } } $wp_events = new WP_Query( $eve_args ); $wp_list_events = '' ; /* Start the Loop */ if ( is_front_page() ){ $curr_paged = $paged ; global $paged ; $temp_paged = $paged ; $paged = $curr_paged ; } $wpea_options = get_option( WPEA_OPTIONS ); $accent_color = isset( $wpea_options [ 'wpea' ][ 'accent_color' ] ) ? $wpea_options [ 'wpea' ][ 'accent_color' ] : '#039ED7' ; $direct_link = isset( $wpea_options [ 'wpea' ][ 'direct_link' ]) ? $wpea_options [ 'wpea' ][ 'direct_link' ] : 'no' ; if (!wpea_is_pro()) { $direct_link = 'no' ; } ob_start(); ?> <div class = "row_grid wpea_frontend_archive" > <?php $template_args = array (); $template_args [ 'css_class' ] = $css_class ; $template_args [ 'direct_link' ] = $direct_link ; if ( $wp_events ->have_posts() ): while ( $wp_events ->have_posts() ) : $wp_events ->the_post(); if ( isset( $atts [ 'layout' ] ) && $atts [ 'layout' ] == 'style2' && wpea_is_pro() ){ get_wpea_template( 'wpea-archive-content2.php' , $template_args ); } else { get_wpea_template( 'wpea-archive-content.php' , $template_args ); } endwhile ; // End of the loop. if ( $wp_events ->max_num_pages > 1) : // custom pagination ?> <div class = "col-wpea-md-12" > <nav class = "prev-next-posts" > <div class = "prev-posts-link alignright" > <?php echo get_next_posts_link( 'Next Events »' , $wp_events ->max_num_pages ); ?> </div> <div class = "next-posts-link alignleft" > <?php echo get_previous_posts_link( '« Previous Events' ); ?> </div> </nav> </div> <?php endif ; else : echo apply_filters( 'wpea_no_events_found_message' , __( "No Events are found." , 'wp-event-aggregator' ) ); endif ; ?> </div> <style type= "text/css" > .wpea_frontend_archive .event_date{ background-color: <?php echo $accent_color ;?>; } .wpea_frontend_archive .event_desc .event_title, .wpea_frontend_archive .event_desc a{ color: <?php echo $accent_color ;?>; } </style> <?php do_action( 'wpea_after_event_list' , $wp_events ); $wp_list_events = ob_get_contents(); ob_end_clean(); wp_reset_postdata(); if ( is_front_page() ){ global $paged ; $paged = $temp_paged ; } return $wp_list_events ; } |
Code file location:
wp-event-aggregator/wp-event-aggregator/includes/class-wp-event-aggregator-cpt.php
Conclusion
Now that you’ve learned how to embed the Wp Event Aggregator Plugin shortcode, understood the parameters, and seen code examples, it’s easy to use and debug any issue that might cause it to ‘not work’. If you still have difficulties with it, don’t hesitate to leave a comment below.
Leave a Reply