Redirect scheduled events without affecting calendars or other posts
This commit is contained in:
@@ -165,22 +165,16 @@ function sportspress_pre_get_posts( $query ) {
|
|||||||
$query->set( 'orderby', 'menu_order' );
|
$query->set( 'orderby', 'menu_order' );
|
||||||
$query->set( 'order', 'ASC' );
|
$query->set( 'order', 'ASC' );
|
||||||
endif;
|
endif;
|
||||||
elseif ( $query->is_main_query() ):
|
else:
|
||||||
if ( 'sp_event' == $post_type ):
|
if ( isset( $query->query[ 'sp_venue' ] ) ):
|
||||||
$GLOBALS[ 'wp_post_statuses' ][ 'future' ]->public = true;
|
|
||||||
elseif ( isset( $query->query[ 'sp_venue' ] ) ):
|
|
||||||
$query->set( 'post_type', 'sp_event' );
|
$query->set( 'post_type', 'sp_event' );
|
||||||
$GLOBALS[ 'wp_post_statuses' ][ 'future' ]->public = true;
|
$GLOBALS[ 'wp_post_statuses' ][ 'future' ]->public = true;
|
||||||
endif;
|
endif;
|
||||||
endif;
|
endif;
|
||||||
}
|
|
||||||
add_action('pre_get_posts', 'sportspress_pre_get_posts');
|
|
||||||
|
|
||||||
function remove_sportspress_pre_get_posts() {
|
return $query;
|
||||||
remove_action( 'pre_get_posts', 'sportspress_pre_get_posts' );
|
|
||||||
$GLOBALS[ 'wp_post_statuses' ][ 'future' ]->public = false;
|
|
||||||
}
|
}
|
||||||
add_action( 'wp', 'remove_sportspress_pre_get_posts' );
|
add_filter('pre_get_posts', 'sportspress_pre_get_posts');
|
||||||
|
|
||||||
function sportspress_show_future_posts( $where, $that ) {
|
function sportspress_show_future_posts( $where, $that ) {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
@@ -190,6 +184,15 @@ function sportspress_show_future_posts( $where, $that ) {
|
|||||||
}
|
}
|
||||||
add_filter( 'posts_where', 'sportspress_show_future_posts', 2, 10 );
|
add_filter( 'posts_where', 'sportspress_show_future_posts', 2, 10 );
|
||||||
|
|
||||||
|
function sportspress_redirect_future_events() {
|
||||||
|
if ( is_main_query() && 'sp_event' == get_query_var( 'post_type' ) && 'future' == get_post_status( get_query_var( 'p' ) ) && ! empty( $_GET['p'] ) ) {
|
||||||
|
if ( $redirect_url = get_post_permalink( get_query_var( 'p' ), false, true ) )
|
||||||
|
wp_redirect( $redirect_url, 301 );
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
add_action( 'template_redirect', 'sportspress_redirect_future_events' );
|
||||||
|
|
||||||
function sportspress_give_event_read_permissions( $allcaps, $caps, $args ) {
|
function sportspress_give_event_read_permissions( $allcaps, $caps, $args ) {
|
||||||
|
|
||||||
// Bail out if we're not asking about viewing an event
|
// Bail out if we're not asking about viewing an event
|
||||||
@@ -306,4 +309,4 @@ function sportspress_remove_page_parent_class( $classes, $item ) {
|
|||||||
return $classes;
|
return $classes;
|
||||||
}
|
}
|
||||||
|
|
||||||
add_filter( 'nav_menu_css_class', 'sportspress_remove_page_parent_class', 10, 2 );
|
add_filter( 'nav_menu_css_class', 'sportspress_remove_page_parent_class', 10, 2 );
|
||||||
Reference in New Issue
Block a user