Advertisement
Beee

IDF pre-get-posts.php

Dec 30th, 2017
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.04 KB | None | 0 0
  1. <?php
  2.  
  3.     // Source: http://clubmate.fi/date-archives-for-wordpress-custom-post-types/
  4.  
  5.     // Custom post type specific rewrite rules
  6.     function events_rewrite_rules( $wp_rewrite ) {
  7.         // Here we're hardcoding the CPT in
  8.         $event_rules       = generate_date_archives_events( 'event', $wp_rewrite );
  9.         $wp_rewrite->rules = $event_rules + $wp_rewrite->rules;
  10.  
  11.         return $wp_rewrite;
  12.     }
  13.     add_action( 'generate_rewrite_rules', 'events_rewrite_rules' );
  14.  
  15.     // Generate date archive rewrite rules for a given custom post type
  16.     function generate_date_archives_events( $cpt, $wp_rewrite ) {
  17.         $event_rules  = array();
  18.         $post_type    = get_post_type_object( $cpt );
  19.         $slug_archive = false;
  20.         if ( $post_type ) {
  21.             $slug_archive = $post_type->has_archive;
  22.         }
  23.         if ( $slug_archive === false ) {
  24.             return $event_rules;
  25.         }
  26.         if ( $slug_archive === true ) {
  27.             // Here's my edit to the original function, let's pick up custom slug from the post type
  28.             // object if user has specified one.
  29.             $slug_archive = $post_type->rewrite[ 'slug' ];
  30.             // $slug_archive = $post_type->name; // what does this do ?
  31.         }
  32.  
  33.         $dates = array(
  34.             array(
  35.                 'rule' => "([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})",
  36.                 'vars' => array( 'year', 'monthnum', 'day' )
  37.             ),
  38.             array(
  39.                 'rule' => "([0-9]{4})/([0-9]{1,2})",
  40.                 'vars' => array( 'year', 'monthnum' )
  41.             ),
  42.             array(
  43.                 'rule' => "([0-9]{4})",
  44.                 'vars' => array( 'year' )
  45.             )
  46.         );
  47.  
  48.         foreach ( $dates as $data ) {
  49.             $query = 'index.php?post_type=' . $cpt;
  50.             $rule  = $slug_archive . '/' . $data[ 'rule' ];
  51.  
  52.             $i = 1;
  53.             foreach ( $data[ 'vars' ] as $var ) {
  54.                 $query .= '&' . $var . '=' . $wp_rewrite->preg_index( $i );
  55.                 $i++;
  56.             }
  57.  
  58.             $event_rules[ $rule . "/?$" ]                               = $query;
  59.             $event_rules[ $rule . "/feed/(feed|rdf|rss|rss2|atom)/?$" ] = $query . "&feed=" . $wp_rewrite->preg_index( $i );
  60.             $event_rules[ $rule . "/(feed|rdf|rss|rss2|atom)/?$" ]      = $query . "&feed=" . $wp_rewrite->preg_index( $i );
  61.             $event_rules[ $rule . "/page/([0-9]{1,})/?$" ]              = $query . "&paged=" . $wp_rewrite->preg_index( $i );
  62.         }
  63.  
  64.         return $event_rules;
  65.     }
  66.  
  67.     function add_vars( $vars ) {
  68.         $vars[] = "continent";
  69.         $vars[] = "subpage";
  70.         $vars[] = "category";
  71.         $vars[] = "booking_id";
  72.  
  73.         return $vars;
  74.     }
  75.     add_filter( 'query_vars', 'add_vars' );
  76.  
  77.     function idf_rewrite_event_subpages() {
  78.         add_rewrite_rule( 'races/(?!type|categories)([^/]*)/([a-z-]+)/?$', 'index.php?post_type=event&name=$matches[1]&subpage=$matches[2]', 'top' );
  79.         add_rewrite_rule( 'races/([^/]*)/riders-list/([a-z-]+)/?$', 'index.php?post_type=event&name=$matches[1]&subpage=riders-list&category=$matches[2]', 'top' );
  80.         add_rewrite_rule( 'my-idf/([a-z-]+)/?$', 'index.php?post_type=page&pagename=my-idf&subpage=$matches[1]', 'top' );
  81.     }
  82.     add_filter( 'init', 'idf_rewrite_event_subpages', 1, 3 );
  83.  
  84.     function idf_rewite_continent_urls() {
  85.         add_rewrite_rule( 'races/([a-z-]+)/?$', 'index.php?post_type=event&continent=$matches[1]', 'top' );
  86.     }
  87.     add_filter( 'init', 'idf_rewite_continent_urls', 1, 3 );
  88.  
  89.     function idf_rewrite_profile_pages() {
  90.         add_rewrite_rule( 'member/([a-zA-Z0-9_-]+)/([a-z-]+)/?$', 'index.php?author_name=$matches[1]&subpage=$matches[2]', 'top' );
  91.         add_rewrite_rule( 'member/([a-zA-Z0-9_-]+)/mentioned/page/([0-9]+)/?$', 'index.php?paged=$matches[2]&author_name=$matches[1]&subpage=mentioned', 'top' );
  92.         add_rewrite_rule( 'member/([a-zA-Z0-9_-]+)/written/page/([0-9]+)/?$', 'index.php?paged=$matches[2]&author_name=$matches[1]&subpage=written', 'top' );
  93.     }
  94.     add_filter( 'init', 'idf_rewrite_profile_pages', 1, 3 );
  95.  
  96.     // is this still needed ????
  97.     function new_subpage_permalink( $permalink, $post, $leavename = false ) {
  98.  
  99.         // Get post
  100.         if ( ! $post ) {
  101.  
  102.             return $permalink;
  103.         }
  104.  
  105.         $post_type = get_post_type( $post->ID );
  106.         if ( in_array( $post_type, array( 'event', 'page' ) ) ) {
  107.             if ( get_query_var( 'subpage' ) ) {
  108.                 $new_permalink = $permalink . get_query_var( 'subpage' ) . '/';
  109.  
  110.                 return $new_permalink;
  111.             }
  112.         }
  113.  
  114.         return $permalink;
  115.     }
  116.     add_filter( 'post_link', 'new_subpage_permalink', 10, 3 );
  117.     // add_filter( 'post_type_link', 'new_subpage_permalink', 10, 3 );
  118.  
  119.     // Change the author permalink base to member
  120.     function change_author_permalinks() {
  121.         global $wp_rewrite;
  122.         $wp_rewrite->author_base = 'member';
  123.         $wp_rewrite->flush_rules();
  124.     }
  125.     add_action( 'init', 'change_author_permalinks' );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement