In this guide, we will show you how you can change or customize the event slug or permalink. It usually appears like this:
http://yoursite.com/events/event-listing-title in the default settings. To customize this with WP Event Manager, you can use the following methods.
- Using a localization file and translating the string.
- Using a filter.
Important note: To make the event slug functional, you need to save it again after making changes to it.
- Go to admin panel,
- Click on Permalinks under the Settings menu.

- Select any Common Settings options.
- Save changes.
Use Filters to change the permalink base
Add the following custom code to your theme functions.php to filter the permalink:
functionchange_event_listing_slug($args){$args['rewrite']['slug'] = _x('events','Event permalink - resave permalinks after changing this','wp-event-manager');return$args;}add_filter('register_post_type_event_listing','change_event_listing_slug');
Change the new event slug/permalink
To make the event slug/permalinks extraordinary, the event slug has organizer and event location names added to it. You can alter this through a filter and custom function added to your theme functions.php file. The code used is as follows:
functioncustom_submit_event_form_save_event_data($data,$post_title,$post_content,$status,$values){$event_slug=array();// Prepend with organizer nameif( !empty($values['organizer']['organizer_name'] ) )$event_slug[] =$values['organizer']['organizer_name'];// Prepend location if ( ! empty( $values['event']['event_location'] ) )$event_slug[] =$values['event']['event_location'];$event_slug[] =$post_title;$data['post_name'] = implode('-',$event_slug);return$data;}add_filter('submit_event_form_save_event_data','custom_submit_event_form_save_event_data', 10, 5 );
Example: Adding the Event ID to the base URL
The event ID will be added to the base URL with the help of the following snippet.E.g. /event/1234/event-title
functionevent_listing_post_type_link($permalink,$post) {// Abort if post is not a event if ( $post->post_type !== 'event_listing' )return$permalink;// Abort early if the placeholder rewrite tag isn't in the generated URLif( false ===strpos($permalink,'%') )return$permalink;$find=array('%post_id%');$replace=array($post->ID);$replace=array_map('sanitize_title',$replace);$permalink=str_replace($find,$replace,$permalink);return$permalink;}add_filter('post_type_link','event_listing_post_type_link', 10, 2 );functionchange_event_listing_slug($args) {$args['rewrite']['slug'] ='event/%post_id%';return$args;}add_filter('register_post_type_event_listing','change_event_listing_slug');
Example: Add the category to the base URL
The Event’s category name is added to the base url with the help of this snippet. E.g./event/event-category/event-title
functionevent_listing_post_type_link($permalink,$post) {// Abort if post is not a event if ( $post->post_type !== 'event_listing' )return$permalink;// Abort early if the placeholder rewrite tag isn't in the generated URLif( false ===strpos($permalink,'%') )return$permalink;// Get the custom taxonomy terms in use by this post$terms= wp_get_post_terms($post->ID,'event_listing_category',array('orderby'=>'parent','order'=>'ASC') );if(empty($terms) ) {// If no terms are assigned to this post, use a string instead (can't leave the placeholder there)$event_listing_category= _x('uncat','slug');}else{// Replace the placeholder rewrite tag with the first term's slug$first_term=array_shift($terms);$event_listing_category=$first_term->slug;}$find=array('%category%');$replace=array($event_listing_category);$replace=array_map('sanitize_title',$replace);$permalink=str_replace($find,$replace,$permalink);return$permalink;}add_filter('post_type_link','event_listing_post_type_link', 10, 2 );functionchange_event_listing_slug($args) {$args['rewrite']['slug'] ='event/%category%';return$args;}add_filter('register_post_type_event_listing','change_event_listing_slug');
Example: Adding the event category and event location to the base URL
This snippet would add the category name and event location name to the base url. E.g. /event/event-category/event-location/event-title
functionevent_listing_post_type_link($permalink,$post) {// Abort if post is not a event if ( $post->post_type !== 'event_listing' ) {return$permalink;}// Abort early if the placeholder rewrite tag isn't in the generated URLif( false ===strpos($permalink,'%') ) {return$permalink;}// Get the custom taxonomy terms in use by this post$categories= wp_get_post_terms($post->ID,'event_listing_category',array('orderby'=>'parent','order'=>'ASC') );$locations= wp_get_post_terms($post->ID,'event_listing_location',array('orderby'=>'parent','order'=>'ASC') );if(empty($categories) ) {// If no terms are assigned to this post, use a string instead (can't leave the placeholder there)$event_listing_category= _x('uncategorized','slug');}else{// Replace the placeholder rewrite tag with the first term's slug$first_term=array_shift($categories);$event_listing_category=$first_term->slug;}if(empty($locations) ) {// If no terms are assigned to this post, use a string instead (can't leave the placeholder there)$event_listing_location= _x('anywhere','slug');}else{// Replace the placeholder rewrite tag with the first term's slug$first_term=array_shift($locations);$event_listing_location=$first_term->slug;}$find=array('%category%','%location%');$replace=array($event_listing_category,$event_listing_location);$replace=array_map('sanitize_title',$replace);$permalink=str_replace($find,$replace,$permalink);return$permalink;}-
add_filter('post_type_link','event_listing_post_type_link', 10, 2 ); functionchange_event_listing_slug($args) {$args['rewrite']['slug'] ='event/%category%/%location%';return$args;}-
add_filter('register_post_type_event_listing','change_event_listing_slug'); functionadd_location_endpoint_tag() {add_rewrite_tag('%location%','([^/]*)');}add_action('init','add_location_endpoint_tag');