Advertisement
Guest User

Using pre_get_posts with custom query_vars/rewrites and sett

a guest
Apr 7th, 2013
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.06 KB | None | 0 0
  1. function rewrite_rule_by_date() {
  2.     add_rewrite_rule('(by\-date)/([0-9]{4}\-[0-9]{2}\-[0-9]{2})$', 'index.php?pagename=$matches[1]&event_date=$matches[2]', 'top');
  3. }
  4. add_action( 'init', array( &$this, 'rewrite_rule_by_date' ) );
  5.  
  6. function query_var_by_date() {
  7.     add_rewrite_tag( '%event_date%', '([0-9]{4}-[0-9]{2}-[0-9]{2})');
  8. }
  9. add_action( 'init', array( &$this, 'query_var_by_date' ) );
  10.  
  11. function custom_event_query( $query ) {
  12.     if (  is_page( 'by-date' ) && get_query_var( 'event_date' ) && is_main_query() ) {
  13.         $query->set( 'post_type', 'event' );
  14.         $query->set( 'post_status', 'publish' );
  15.         $query->set( 'meta_key', '_event_scheduled_date' );
  16.         $query->set( 'orderby', 'meta_value' );
  17.         $query->set( 'order', 'ASC' );
  18.         $query->set( 'post_per_page', -1 );
  19.        
  20.         $meta_query = array(
  21.             array(
  22.                 'key' => '_event_scheduled_date',
  23.                 'value' => get_query_var( 'event_date' ),
  24.                 'type' => 'DATE',
  25.                 'compare' => '='
  26.             )
  27.         );
  28.  
  29.         $query->set( 'meta_query', $meta_query );
  30.     }
  31.  
  32.     return $query;
  33. }
  34. add_filter( 'pre_get_posts', 'custom_event_query' );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement