Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // Source: http://clubmate.fi/date-archives-for-wordpress-custom-post-types/
- // Custom post type specific rewrite rules
- function events_rewrite_rules( $wp_rewrite ) {
- // Here we're hardcoding the CPT in
- $event_rules = generate_date_archives_events( 'event', $wp_rewrite );
- $wp_rewrite->rules = $event_rules + $wp_rewrite->rules;
- return $wp_rewrite;
- }
- add_action( 'generate_rewrite_rules', 'events_rewrite_rules' );
- // Generate date archive rewrite rules for a given custom post type
- function generate_date_archives_events( $cpt, $wp_rewrite ) {
- $event_rules = array();
- $post_type = get_post_type_object( $cpt );
- $slug_archive = false;
- if ( $post_type ) {
- $slug_archive = $post_type->has_archive;
- }
- if ( $slug_archive === false ) {
- return $event_rules;
- }
- if ( $slug_archive === true ) {
- // Here's my edit to the original function, let's pick up custom slug from the post type
- // object if user has specified one.
- $slug_archive = $post_type->rewrite[ 'slug' ];
- // $slug_archive = $post_type->name; // what does this do ?
- }
- $dates = array(
- array(
- 'rule' => "([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})",
- 'vars' => array( 'year', 'monthnum', 'day' )
- ),
- array(
- 'rule' => "([0-9]{4})/([0-9]{1,2})",
- 'vars' => array( 'year', 'monthnum' )
- ),
- array(
- 'rule' => "([0-9]{4})",
- 'vars' => array( 'year' )
- )
- );
- foreach ( $dates as $data ) {
- $query = 'index.php?post_type=' . $cpt;
- $rule = $slug_archive . '/' . $data[ 'rule' ];
- $i = 1;
- foreach ( $data[ 'vars' ] as $var ) {
- $query .= '&' . $var . '=' . $wp_rewrite->preg_index( $i );
- $i++;
- }
- $event_rules[ $rule . "/?$" ] = $query;
- $event_rules[ $rule . "/feed/(feed|rdf|rss|rss2|atom)/?$" ] = $query . "&feed=" . $wp_rewrite->preg_index( $i );
- $event_rules[ $rule . "/(feed|rdf|rss|rss2|atom)/?$" ] = $query . "&feed=" . $wp_rewrite->preg_index( $i );
- $event_rules[ $rule . "/page/([0-9]{1,})/?$" ] = $query . "&paged=" . $wp_rewrite->preg_index( $i );
- }
- return $event_rules;
- }
- function add_vars( $vars ) {
- $vars[] = "continent";
- $vars[] = "subpage";
- $vars[] = "category";
- $vars[] = "booking_id";
- return $vars;
- }
- add_filter( 'query_vars', 'add_vars' );
- function idf_rewrite_event_subpages() {
- add_rewrite_rule( 'races/(?!type|categories)([^/]*)/([a-z-]+)/?$', 'index.php?post_type=event&name=$matches[1]&subpage=$matches[2]', 'top' );
- add_rewrite_rule( 'races/([^/]*)/riders-list/([a-z-]+)/?$', 'index.php?post_type=event&name=$matches[1]&subpage=riders-list&category=$matches[2]', 'top' );
- add_rewrite_rule( 'my-idf/([a-z-]+)/?$', 'index.php?post_type=page&pagename=my-idf&subpage=$matches[1]', 'top' );
- }
- add_filter( 'init', 'idf_rewrite_event_subpages', 1, 3 );
- function idf_rewite_continent_urls() {
- add_rewrite_rule( 'races/([a-z-]+)/?$', 'index.php?post_type=event&continent=$matches[1]', 'top' );
- }
- add_filter( 'init', 'idf_rewite_continent_urls', 1, 3 );
- function idf_rewrite_profile_pages() {
- add_rewrite_rule( 'member/([a-zA-Z0-9_-]+)/([a-z-]+)/?$', 'index.php?author_name=$matches[1]&subpage=$matches[2]', 'top' );
- add_rewrite_rule( 'member/([a-zA-Z0-9_-]+)/mentioned/page/([0-9]+)/?$', 'index.php?paged=$matches[2]&author_name=$matches[1]&subpage=mentioned', 'top' );
- add_rewrite_rule( 'member/([a-zA-Z0-9_-]+)/written/page/([0-9]+)/?$', 'index.php?paged=$matches[2]&author_name=$matches[1]&subpage=written', 'top' );
- }
- add_filter( 'init', 'idf_rewrite_profile_pages', 1, 3 );
- // is this still needed ????
- function new_subpage_permalink( $permalink, $post, $leavename = false ) {
- // Get post
- if ( ! $post ) {
- return $permalink;
- }
- $post_type = get_post_type( $post->ID );
- if ( in_array( $post_type, array( 'event', 'page' ) ) ) {
- if ( get_query_var( 'subpage' ) ) {
- $new_permalink = $permalink . get_query_var( 'subpage' ) . '/';
- return $new_permalink;
- }
- }
- return $permalink;
- }
- add_filter( 'post_link', 'new_subpage_permalink', 10, 3 );
- // add_filter( 'post_type_link', 'new_subpage_permalink', 10, 3 );
- // Change the author permalink base to member
- function change_author_permalinks() {
- global $wp_rewrite;
- $wp_rewrite->author_base = 'member';
- $wp_rewrite->flush_rules();
- }
- add_action( 'init', 'change_author_permalinks' );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement