- // paging
- if ( $paged = get_query_var('paged') ) {
- if ( $paged > 0 ) {
- if ( !$redirect_url )
- $redirect_url = $requested_url;
- $paged_redirect = @parse_url($redirect_url);
- $paged_redirect['path'] = preg_replace('|/page/[0-9]+?(/+)?$|', '/', $paged_redirect['path']); // strip off any existing paging
- $paged_redirect['path'] = preg_replace('|/index.php/?$|', '/', $paged_redirect['path']); // strip off trailing /index.php/
- if ( $paged > 1 && !is_single() ) {
- $paged_redirect['path'] = trailingslashit($paged_redirect['path']);
- if ( $wp_rewrite->using_index_permalinks() && strpos($paged_redirect['path'], '/index.php/') === false )
- $paged_redirect['path'] .= 'index.php/';
- $paged_redirect['path'] .= user_trailingslashit("page/$paged", 'paged');
- } elseif ( !is_home() && !is_single() ){
- $paged_redirect['path'] = user_trailingslashit($paged_redirect['path'], 'paged');
+ // Post Paging
+ if ( is_singular() && ! is_front_page() && get_query_var('page') ) {
+ if ( !$redirect_url )
+ $redirect_url = get_permalink( get_queried_object_id() );
+ $redirect_url = trailingslashit( $redirect_url ) . user_trailingslashit( get_query_var( '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( '#/comment-page-[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('#/comment-page-[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'] );