WordPress.org

Make WordPress Core

Ticket #21266: 21271.2.diff

File 21271.2.diff, 7.5 KB (added by sirzooro, 3 years ago)

Path with fix for incorrect index-based permalinks for front page

  • wp-includes/link-template.php

     
    13751375 * 
    13761376 * @param int $pagenum Optional. Page ID. 
    13771377 * @param bool $escape Optional. Whether to escape the URL for display, with esc_url(). Defaults to true. 
    1378 *       Otherwise, prepares the URL with esc_url_raw(). 
     1378 *      Otherwise, prepares the URL with esc_url_raw(). 
     1379 * @param string $url Optional. URL to modify. Defaults to null - in this case function will use $_SERVER['REQUEST_URI'] 
    13791380 * @return string 
    13801381 */ 
    1381 function get_pagenum_link($pagenum = 1, $escape = true ) { 
     1382function get_pagenum_link( $pagenum = 1, $escape = true, $url = null ) { 
    13821383        global $wp_rewrite; 
    13831384 
    13841385        $pagenum = (int) $pagenum; 
    13851386 
    1386         $request = remove_query_arg( 'paged' ); 
     1387        if ( !empty( $url ) ) 
     1388                $request = remove_query_arg( 'paged', $url ); 
     1389        else 
     1390                $request = remove_query_arg( 'paged' ); 
    13871391 
    1388         $home_root = parse_url(home_url()); 
    1389         $home_root = ( isset($home_root['path']) ) ? $home_root['path'] : ''; 
     1392        if ( !empty( $url ) ) 
     1393                $home_root = home_url(); 
     1394        else { 
     1395                $home_root = parse_url( home_url() ); 
     1396                $home_root = ( isset( $home_root['path'] ) ) ? $home_root['path'] : ''; 
     1397        } 
    13901398        $home_root = preg_quote( $home_root, '|' ); 
    13911399 
    1392         $request = preg_replace('|^'. $home_root . '|', '', $request); 
    1393         $request = preg_replace('|^/+|', '', $request); 
     1400        $request = preg_replace( '|^'. $home_root . '|', '', $request ); 
     1401        $request = preg_replace( '|^/+|', '', $request ); 
    13941402 
    13951403        if ( !$wp_rewrite->using_permalinks() || is_admin() ) { 
    13961404                $base = trailingslashit( get_bloginfo( 'url' ) ); 
     
    14111419                        $query_string = ''; 
    14121420                } 
    14131421 
    1414                 $request = preg_replace( "|$wp_rewrite->pagination_base/\d+/?$|", '', $request); 
    1415                 $request = preg_replace( '|^index\.php|', '', $request); 
    1416                 $request = ltrim($request, '/'); 
     1422                $request = preg_replace( "|$wp_rewrite->pagination_base/\d+/?$|", '', $request ); 
     1423                $request = preg_replace( '|^index\.php|', '', $request ); 
     1424                $request = ltrim( $request, '/' ); 
    14171425 
    14181426                $base = trailingslashit( get_bloginfo( 'url' ) ); 
    14191427 
     
    14271435                $result = $base . $request . $query_string; 
    14281436        } 
    14291437 
    1430         $result = apply_filters('get_pagenum_link', $result); 
     1438        $result = apply_filters( 'get_pagenum_link', $result, $url ); 
    14311439 
    14321440        if ( $escape ) 
    14331441                return esc_url( $result ); 
     
    16401648} 
    16411649 
    16421650/** 
     1651 * Retrieve page link for paginated post (i.e. includes the <!--nextpage--> 
     1652 * Quicktag one or more times). 
     1653 * 
     1654 * @since 3.5.0 
     1655 * 
     1656 * @param int $pagenum Optional. Page number. Default is 1. 
     1657 * @param int|object $post Optional. Post ID or post object. Default is null 
     1658 * @return string 
     1659 */ 
     1660function get_post_page_link( $pagenum = 1, $post = null ) { 
     1661        global $wp_rewrite; 
     1662         
     1663        $post = get_post( $post ); 
     1664        $pagenum = (int) $pagenum; 
     1665         
     1666        $result = get_permalink( $post->ID ); 
     1667 
     1668        if ( 1 != $pagenum ) { 
     1669                if ( ( '' == get_option( 'permalink_structure' ) ) || in_array( $post->post_status, array( 'draft', 'pending' ) ) ) 
     1670                        $result = add_query_arg( 'page', $pagenum, $result ); 
     1671                elseif ( ( 'page' == get_option('show_on_front') ) && ( get_option('page_on_front') == $post->ID ) ) { 
     1672                        if ( $wp_rewrite->using_index_permalinks() ) 
     1673                                $result = trailingslashit( $result ) . trailingslashit( $wp_rewrite->index ) . user_trailingslashit( "$wp_rewrite->pagination_base/" . $pagenum, 'single_paged' ); 
     1674                        else 
     1675                                $result = trailingslashit( $result ) . user_trailingslashit( "$wp_rewrite->pagination_base/" . $pagenum, 'single_paged' ); 
     1676                } else 
     1677                        $result = trailingslashit( $result ) . user_trailingslashit( $pagenum, 'single_paged' ); 
     1678        } 
     1679 
     1680        $result = apply_filters( 'get_post_page_link', $result, $post, $pagenum ); 
     1681 
     1682        return $result; 
     1683} 
     1684 
     1685/** 
    16431686 * Retrieve comments page number link. 
    16441687 * 
    16451688 * @since 2.7.0 
    16461689 * 
    1647  * @param int $pagenum Optional. Page number. 
     1690 * @param int $pagenum Optional. Page number. Default is 1. 
     1691 * @param int $max_page Optional. Maximum page number. Default is 0. 
     1692 * @param int|object $post Optional. Post ID or post object. Default is null 
     1693 * @param boolean $add_anchor Optional. Add anchor part to link or not. Default is true. 
    16481694 * @return string 
    16491695 */ 
    1650 function get_comments_pagenum_link( $pagenum = 1, $max_page = 0 ) { 
    1651         global $post, $wp_rewrite; 
     1696function get_comments_pagenum_link( $pagenum = 1, $max_page = 0, $post = null, $add_anchor = true ) { 
     1697        global $wp_rewrite; 
    16521698 
     1699        $post = get_post( $post ); 
    16531700        $pagenum = (int) $pagenum; 
    16541701 
    16551702        $result = get_permalink( $post->ID ); 
    16561703 
    16571704        if ( 'newest' == get_option('default_comments_page') ) { 
    16581705                if ( $pagenum != $max_page ) { 
    1659                         if ( $wp_rewrite->using_permalinks() ) 
    1660                                 $result = user_trailingslashit( trailingslashit($result) . 'comment-page-' . $pagenum, 'commentpaged'); 
    1661                         else 
     1706                        if ( $wp_rewrite->using_permalinks() ) { 
     1707                                if ( $wp_rewrite->using_index_permalinks() && ( 'page' == get_option('show_on_front') ) && ( get_option('page_on_front') == $post->ID ) ) 
     1708                                        $result = user_trailingslashit( trailingslashit( $result ) . trailingslashit( $wp_rewrite->index ) . 'comment-page-' . $pagenum, 'commentpaged' ); 
     1709                                else 
     1710                                        $result = user_trailingslashit( trailingslashit( $result ) . 'comment-page-' . $pagenum, 'commentpaged' ); 
     1711                        } else 
    16621712                                $result = add_query_arg( 'cpage', $pagenum, $result ); 
    16631713                } 
    16641714        } elseif ( $pagenum > 1 ) { 
    1665                 if ( $wp_rewrite->using_permalinks() ) 
    1666                         $result = user_trailingslashit( trailingslashit($result) . 'comment-page-' . $pagenum, 'commentpaged'); 
    1667                 else 
     1715                if ( $wp_rewrite->using_permalinks() ) { 
     1716                        if ( $wp_rewrite->using_index_permalinks() && ( 'page' == get_option('show_on_front') ) && ( get_option('page_on_front') == $post->ID ) ) 
     1717                                $result = user_trailingslashit( trailingslashit($result) . trailingslashit( $wp_rewrite->index ) . 'comment-page-' . $pagenum, 'commentpaged' ); 
     1718                        else 
     1719                                $result = user_trailingslashit( trailingslashit($result) . 'comment-page-' . $pagenum, 'commentpaged' ); 
     1720                } else 
    16681721                        $result = add_query_arg( 'cpage', $pagenum, $result ); 
    16691722        } 
    16701723 
    1671         $result .= '#comments'; 
     1724        if ( $add_anchor ) { 
     1725                $result .= '#comments'; 
     1726        } 
    16721727 
    1673         $result = apply_filters('get_comments_pagenum_link', $result); 
     1728        $result = apply_filters( 'get_comments_pagenum_link', $result, $post, $pagenum, $max_page, $add_anchor ); 
    16741729 
    16751730        return $result; 
    16761731} 
  • wp-includes/post-template.php

     
    607607 *      is not linked. 
    608608 * 
    609609 * @since 1.2.0 
    610  * @access private 
    611610 * 
    612611 * @param string|array $args Optional. Overwrite the defaults. 
    613612 * @return string Formatted output in HTML. 
    614613 */ 
    615 function wp_link_pages($args = '') { 
     614function wp_link_pages( $args = '' ) { 
    616615        $defaults = array( 
    617616                'before' => '<p>' . __('Pages:'), 'after' => '</p>', 
    618617                'link_before' => '', 'link_after' => '', 
     
    676675 * @return string Link. 
    677676 */ 
    678677function _wp_link_page( $i ) { 
    679         global $post, $wp_rewrite; 
    680  
    681         if ( 1 == $i ) { 
    682                 $url = get_permalink(); 
    683         } else { 
    684                 if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) ) 
    685                         $url = add_query_arg( 'page', $i, get_permalink() ); 
    686                 elseif ( 'page' == get_option('show_on_front') && get_option('page_on_front') == $post->ID ) 
    687                         $url = trailingslashit(get_permalink()) . user_trailingslashit("$wp_rewrite->pagination_base/" . $i, 'single_paged'); 
    688                 else 
    689                         $url = trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged'); 
    690         } 
    691  
     678        $url = get_post_page_link( $i ); 
    692679        return '<a href="' . esc_url( $url ) . '">'; 
    693680} 
    694681