Ticket #7942: 7492.diff
File 7492.diff, 6.7 KB (added by , 16 years ago) |
---|
-
wp-includes/canonical.php
123 123 } 124 124 125 125 // paging and feeds 126 if ( get_query_var('paged') || is_feed() ) {126 if ( get_query_var('paged') || is_feed() || get_query_var('cpage') ) { 127 127 if ( !$redirect_url ) 128 128 $redirect_url = $requested_url; 129 129 $paged_redirect = @parse_url($redirect_url); 130 while ( preg_match( '#page/[0-9]+?(/+)?$#', $paged_redirect['path'] ) || preg_match( '#/feed(/[a-z0-9-]*?(/+)?)?$#', $paged_redirect['path'] ) ) {130 while ( preg_match( '#page/[0-9]+?(/+)?$#', $paged_redirect['path'] ) || preg_match( '#/feed(/[a-z0-9-]*?(/+)?)?$#', $paged_redirect['path'] ) || preg_match( '#comment-page-[0-9]+/?$#', $paged_redirect['path'] ) ) { 131 131 // Strip off paging and feed 132 132 $paged_redirect['path'] = preg_replace('#/page/[0-9]+?(/+)?$#', '/', $paged_redirect['path']); // strip off any existing paging 133 133 $paged_redirect['path'] = preg_replace('#/feed(/[a-z0-9-]*?(/+)?)?$#', '/', $paged_redirect['path']); // strip off any existing feed 134 $paged_redirect['path'] = preg_replace('#comment-page-[0-9]+?(/+)?$#', '/', $paged_redirect['path']); // strip off any existing comment paging 134 135 } 135 136 136 137 $paged_redirect['path'] = preg_replace('|/index.php/?$|', '/', $paged_redirect['path']); // strip off trailing /index.php/ … … 148 149 if ( is_feed() ) { 149 150 $paged_redirect['path'] = user_trailingslashit( trailingslashit( $paged_redirect['path'] ) . 'feed/' . ( ( 'rss2' == get_query_var('feed') || 'feed' == get_query_var('feed') ) ? '' : get_query_var('feed') ), 'feed' ); 150 151 } 152 if ( get_query_var('cpage') > 1 ) { 153 $paged_redirect['path'] = user_trailingslashit( trailingslashit( $paged_redirect['path'] ) . 'comment-page-' . get_query_var('cpage'), 'commentpaged' ); 154 } 151 155 $redirect_url = $paged_redirect['scheme'] . '://' . $paged_redirect['host'] . $paged_redirect['path']; 152 156 $redirect['path'] = $paged_redirect['path']; 153 157 $redirect['query'] = remove_query_arg( 'paged', $redirect['query'] ); 154 $redirect['query'] = remove_query_arg( 'feed', $redirect['query'] ); 158 $redirect['query'] = remove_query_arg( 'feed', $redirect['query'] ); 159 $redirect['query'] = remove_query_arg( 'cpage', $redirect['query'] ); 155 160 } 156 161 } 157 162 -
wp-includes/link-template.php
1264 1264 * @return string Markup for pagination links 1265 1265 */ 1266 1266 function paginate_comments_links($args = array()) { 1267 global $wp_query ;1267 global $wp_query, $wp_rewrite; 1268 1268 1269 1269 if ( !is_singular() ) 1270 1270 return; … … 1281 1281 'echo' => true, 1282 1282 'add_fragment' => '#comments' 1283 1283 ); 1284 if ( $wp_rewrite->using_permalinks() ) 1285 $defaults['base'] = user_trailingslashit(get_permalink() . 'comment-page-%#%', 'commentpaged'); 1286 1284 1287 $args = wp_parse_args( $args, $defaults ); 1285 1288 $page_links = paginate_links( $args ); 1286 1289 -
wp-includes/rewrite.php
1259 1259 //build a regex to match the trackback and page/xx parts of URLs 1260 1260 $trackbackregex = 'trackback/?$'; 1261 1261 $pageregex = 'page/?([0-9]{1,})/?$'; 1262 $commentregex = 'comment-page-([0-9]{1,})/?$'; 1262 1263 1263 1264 //build up an array of endpoint regexes to append => queries to append 1264 1265 if ($endpoints) { … … 1339 1340 $pagematch = $match . $pageregex; 1340 1341 $pagequery = $index . '?' . $query . '&paged=' . $this->preg_index($num_toks + 1); 1341 1342 1343 //create query for /comment-page-xx 1344 $commentmatch = $match . $commentregex; 1345 $commentquery = $index . '?' . $query . '&cpage=' . $this->preg_index($num_toks + 1); 1346 1342 1347 //create query for /feed/(feed|atom|rss|rss2|rdf) 1343 1348 $feedmatch = $match . $feedregex; 1344 1349 $feedquery = $feedindex . '?' . $query . '&feed=' . $this->preg_index($num_toks + 1); … … 1360 1365 if ($paged) //...and /page/xx ones 1361 1366 $rewrite = array_merge($rewrite, array($pagematch => $pagequery)); 1362 1367 1368 //only on pages with comments add ../comment-page-xx/ 1369 if ( EP_PAGES & $ep_mask || EP_PERMALINK & $ep_mask || EP_NONE & $ep_mask ) 1370 $rewrite = array_merge($rewrite, array($commentmatch => $commentquery)); 1371 1363 1372 //do endpoints 1364 1373 if ($endpoints) { 1365 1374 foreach ( (array) $ep_query_append as $regex => $ep) { … … 1403 1412 $sub1tb = $sub1 . $trackbackregex; //add trackback regex <permalink>/trackback/... 1404 1413 $sub1feed = $sub1 . $feedregex; //and <permalink>/feed/(atom|...) 1405 1414 $sub1feed2 = $sub1 . $feedregex2; //and <permalink>/(feed|atom...) 1415 $sub1comment = $sub1 . $commentregex; //and <permalink>/comment-page-xx 1406 1416 //add an ? as we don't have to match that last slash, and finally a $ so we 1407 1417 //match to the end of the URL 1408 1418 … … 1412 1422 $sub2tb = $sub2 . $trackbackregex; //and add trackbacks <permalink>/attachment/trackback 1413 1423 $sub2feed = $sub2 . $feedregex; //feeds, <permalink>/attachment/feed/(atom|...) 1414 1424 $sub2feed2 = $sub2 . $feedregex2; //and feeds again on to this <permalink>/attachment/(feed|atom...) 1425 $sub2comment = $sub2 . $commentregex; //and <permalink>/comment-page-xx 1415 1426 1416 1427 //create queries for these extra tag-ons we've just dealt with 1417 1428 $subquery = $index . '?attachment=' . $this->preg_index(1); 1418 1429 $subtbquery = $subquery . '&tb=1'; 1419 1430 $subfeedquery = $subquery . '&feed=' . $this->preg_index(2); 1431 $subcommentquery = $subquery . '&cpage=' . $this->preg_index(2); 1420 1432 1421 1433 //do endpoints for attachments 1422 1434 if ( !empty($endpoint) ) { foreach ( (array) $ep_query_append as $regex => $ep ) { … … 1451 1463 1452 1464 //add regexes/queries for attachments, attachment trackbacks and so on 1453 1465 if ( ! $page ) //require <permalink>/attachment/stuff form for pages because of confusion with subpages 1454 $rewrite = array_merge($rewrite, array($sub1 => $subquery, $sub1tb => $subtbquery, $sub1feed => $subfeedquery, $sub1feed2 => $subfeedquery ));1455 $rewrite = array_merge(array($sub2 => $subquery, $sub2tb => $subtbquery, $sub2feed => $subfeedquery, $sub2feed2 => $subfeedquery ), $rewrite);1466 $rewrite = array_merge($rewrite, array($sub1 => $subquery, $sub1tb => $subtbquery, $sub1feed => $subfeedquery, $sub1feed2 => $subfeedquery, $sub1comment => $subcommentquery)); 1467 $rewrite = array_merge(array($sub2 => $subquery, $sub2tb => $subtbquery, $sub2feed => $subfeedquery, $sub2feed2 => $subfeedquery, $sub2comment => $subcommentquery), $rewrite); 1456 1468 } 1457 1469 } //if($num_toks) 1458 1470 //add the rules for this dir to the accumulating $post_rewrite