WordPress.org

Make WordPress Core

Ticket #21266: 21271.2.diff

File 21271.2.diff, 7.5 KB (added by sirzooro, 6 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