+
+ }
+ } elseif ( is_single() && strpos($wp_rewrite->permalink_structure, '%category%') !== false && $cat = get_query_var( 'category_name' ) ) {
+ $category = get_category_by_path( $cat );
+ if ( ( ! $category || is_wp_error( $category ) ) || ! has_term( $category->term_id, 'category', $wp_query->get_queried_object_id() ) ) {
+ $redirect_url = get_permalink($wp_query->get_queried_object_id());
+ }
+ }
+
+ // Post Paging
+ if ( is_singular() && get_query_var('page') ) {
+ if ( !$redirect_url )
+ $redirect_url = get_permalink( get_queried_object_id() );
+
+ $page = get_query_var( 'page' );
+ if ( $page > 1 ) {
+ if ( is_front_page() ) {
+ $redirect_url = trailingslashit( $redirect_url ) . user_trailingslashit( "$wp_rewrite->pagination_base/$page", 'paged' );
+ } else {
+ $redirect_url = trailingslashit( $redirect_url ) . user_trailingslashit( $page, 'single_paged' );
+ }
+ }
+ $redirect['query'] = remove_query_arg( 'page', $redirect['query'] );
+ }
+
+ // paging and feeds
+ if ( get_query_var('paged') || is_feed() || get_query_var('cpage') ) {
+ while ( preg_match( "#/$wp_rewrite->pagination_base/?[0-9]+?(/+)?$#", $redirect['path'] ) || preg_match( '#/(comments/?)?(feed|rss|rdf|atom|rss2)(/+)?$#', $redirect['path'] ) || preg_match( "#/{$wp_rewrite->comments_pagination_base}-[0-9]+(/+)?$#", $redirect['path'] ) ) {
+ // Strip off paging and feed
+ $redirect['path'] = preg_replace("#/$wp_rewrite->pagination_base/?[0-9]+?(/+)?$#", '/', $redirect['path']); // strip off any existing paging
+ $redirect['path'] = preg_replace('#/(comments/?)?(feed|rss2?|rdf|atom)(/+|$)#', '/', $redirect['path']); // strip off feed endings
+ $redirect['path'] = preg_replace("#/{$wp_rewrite->comments_pagination_base}-[0-9]+?(/+)?$#", '/', $redirect['path']); // strip off any existing comment paging
+ }
+
+ $addl_path = '';
+ if ( is_feed() && in_array( get_query_var('feed'), $wp_rewrite->feeds ) ) {
+ $addl_path = !empty( $addl_path ) ? trailingslashit($addl_path) : '';
+ if ( !is_singular() && get_query_var( 'withcomments' ) )
+ $addl_path .= 'comments/';
+ if ( ( 'rss' == get_default_feed() && 'feed' == get_query_var('feed') ) || 'rss' == get_query_var('feed') )
+ $addl_path .= user_trailingslashit( 'feed/' . ( ( get_default_feed() == 'rss2' ) ? '' : 'rss2' ), 'feed' );
+ else
+ $addl_path .= user_trailingslashit( 'feed/' . ( ( get_default_feed() == get_query_var('feed') || 'feed' == get_query_var('feed') ) ? '' : get_query_var('feed') ), 'feed' );
+ $redirect['query'] = remove_query_arg( 'feed', $redirect['query'] );
+ } elseif ( is_feed() && 'old' == get_query_var('feed') ) {
+ $old_feed_files = array(
+ 'wp-atom.php' => 'atom',
+ 'wp-commentsrss2.php' => 'comments_rss2',
+ 'wp-feed.php' => get_default_feed(),
+ 'wp-rdf.php' => 'rdf',
+ 'wp-rss.php' => 'rss2',
+ 'wp-rss2.php' => 'rss2',
+ );
+ if ( isset( $old_feed_files[ basename( $redirect['path'] ) ] ) ) {
+ $redirect_url = get_feed_link( $old_feed_files[ basename( $redirect['path'] ) ] );
+ wp_redirect( $redirect_url, 301 );
+ die();
+ }
+ }
+
+ if ( get_query_var('paged') > 0 ) {
+ $paged = get_query_var('paged');
+ $redirect['query'] = remove_query_arg( 'paged', $redirect['query'] );
+ if ( !is_feed() ) {
+ if ( $paged > 1 && !is_single() ) {
+ $addl_path = ( !empty( $addl_path ) ? trailingslashit($addl_path) : '' ) . user_trailingslashit("$wp_rewrite->pagination_base/$paged", 'paged');
+ } elseif ( !is_single() ) {
+ $addl_path = !empty( $addl_path ) ? trailingslashit($addl_path) : '';
+ }
+ } elseif ( $paged > 1 ) {
+ $redirect['query'] = add_query_arg( 'paged', $paged, $redirect['query'] );
+ }
+ }
+
+ if ( get_option( 'page_comments' ) && (
+ ( 'newest' == get_option( 'default_comments_page' ) && get_query_var( 'cpage' ) > 0 ) ||
+ ( 'newest' != get_option( 'default_comments_page' ) && get_query_var( 'cpage' ) > 1 )
+ ) ) {
+ $addl_path = ( !empty( $addl_path ) ? trailingslashit($addl_path) : '' ) . user_trailingslashit( $wp_rewrite->comments_pagination_base . '-' . get_query_var('cpage'), 'commentpaged' );
+ $redirect['query'] = remove_query_arg( 'cpage', $redirect['query'] );
+ }
+
+ $redirect['path'] = user_trailingslashit( preg_replace('|/' . preg_quote( $wp_rewrite->index, '|' ) . '/?$|', '/', $redirect['path']) ); // strip off trailing /index.php/
+ if ( !empty( $addl_path ) && $wp_rewrite->using_index_permalinks() && strpos($redirect['path'], '/' . $wp_rewrite->index . '/') === false )
+ $redirect['path'] = trailingslashit($redirect['path']) . $wp_rewrite->index . '/';
+ if ( !empty( $addl_path ) )
+ $redirect['path'] = trailingslashit($redirect['path']) . $addl_path;
+ $redirect_url = $redirect['scheme'] . '://' . $redirect['host'] . $redirect['path'];
+ }
+
+ if ( 'wp-register.php' == basename( $redirect['path'] ) ) {
+ if ( is_multisite() ) {
+ /** This filter is documented in wp-login.php */
+ $redirect_url = apply_filters( 'wp_signup_location', network_site_url( 'wp-signup.php' ) );
+ } else {
+ $redirect_url = wp_registration_url();