Create Custom add_rewrite_tag with Hyphens
-
Good morning,
I am looking to create a rewrite structure for a custom-built events section of my website on my development server. I’ve created four custom re-write tags:
add_action( 'init', 'aecm_rewrite_tags', 10, 0 ); function aecm_rewrite_tags() { //Get global global $wp_rewrite; //Set new values $wp_rewrite->add_rewrite_tag( '%event_start_year%', '([^&/]+)', 'event_start_year=' ); $wp_rewrite->add_rewrite_tag( '%event_start_month%', '([^&/]+)', 'event_start_month=' ); $wp_rewrite->add_rewrite_tag( '%event_start_date%', '([^&/]+)', 'event_start_date=' ); $wp_rewrite->add_rewrite_tag( '%event_start_full%', '([^&/]+)', 'event_start_full=' ); //Add permastrutures // $wp_rewrite->add_permastruct( 'events', '/%event_start_year%/%event_start_date%/', false ); }Currently, I have the permastructure for the Custom Post Type ‘Event’ set to:
http://localhost/wordpress/events/%event_start_year%/%event_start_month%/%postname%/Which works great. However, I want to change it to be structured like this:
http://localhost/wordpress/events/%event_start_full%-%postname%/The rewrite rule throws a 404 when I use a hyphen between rewrite tags, but not when I use a forward slash.
The code that defines the rewrite tags values:
add_filter( 'post_type_link', 'aecm_post_type_links', 1, 3 ); function aecm_post_type_links( $permalink, $post, $leavename ) { //Rewrites $permalink_rewrites = array( '%category%', '%event_start_year%', '%event_start_month%', '%event_start_date%', '%event_start_full%', '%postname%' ? : $leavename, ); //Category first $category = ''; if ( strpos($permalink, '%category%') !== false ) : $cats = get_the_category( $post->id ); if ( $cats ) : usort($cats, '_usort_terms_by_ID'); // order by ID $category = $cats[0]->slug; if ( $parent = $cats[0]->parent ) : $category = get_category_parents($parent, false, '/', true) . $category; endif; endif; // show default category in permalinks, without having to assign it explicitly if ( empty($category) ) : $default_category = get_category( get_option( 'default_category' ) ); $category = is_wp_error( $default_category ) ? '' : $default_category->slug; endif; endif; //Get fields $event_start_year = date( 'Y', strtotime(get_field( 'event_Date-Start', $post->ID )) ); $event_start_month = date( 'm', strtotime(get_field( 'event_Date-Start', $post->ID )) ); $event_start_date = date( 'd', strtotime(get_field( 'event_Date-Start', $post->ID )) ); $event_start_full = date( 'Ymd', strtotime(get_field( 'event_Date-Start', $post->ID )) ); //Define $permalink_replacements = array( $category, $event_start_year, $event_start_month, $event_start_date, $event_start_full, ); //Regenerate permalink $permalink = user_trailingslashit( str_replace( $permalink_rewrites, $permalink_replacements, $permalink ), 'single' ); //Return return $permalink; }Is there a way to write the permstructure to allow hyphens between rewrite tags? If I use a permastructure that has http://localhost/wordpress/events/%post_id%-%postname%/ it works fine, so I’m assuming it’s my custom rewrite tags that are the issue.
Thanks!
The topic ‘Create Custom add_rewrite_tag with Hyphens’ is closed to new replies.