WordPress.org

Make WordPress Core

Ticket #21266: 21271.diff

File 21271.diff, 6.6 KB (added by sirzooro, 6 years ago)
  • 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
  • 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                        $result = trailingslashit( $result ) . user_trailingslashit( "$wp_rewrite->pagination_base/" . $pagenum, 'single_paged' );
     1673                else
     1674                        $result = trailingslashit( $result ) . user_trailingslashit( $pagenum, 'single_paged' );
     1675        }
     1676
     1677        $result = apply_filters( 'get_post_page_link', $result, $post, $pagenum );
     1678
     1679        return $result;
     1680}
     1681
     1682/**
    16431683 * Retrieve comments page number link.
    16441684 *
    16451685 * @since 2.7.0
    16461686 *
    1647  * @param int $pagenum Optional. Page number.
     1687 * @param int $pagenum Optional. Page number. Default is 1.
     1688 * @param int $max_page Optional. Maximum page number. Default is 0.
     1689 * @param int|object $post Optional. Post ID or post object. Default is null
     1690 * @param boolean $add_anchor Optional. Add anchor part to link or not. Default is true.
    16481691 * @return string
    16491692 */
    1650 function get_comments_pagenum_link( $pagenum = 1, $max_page = 0 ) {
    1651         global $post, $wp_rewrite;
     1693function get_comments_pagenum_link( $pagenum = 1, $max_page = 0, $post = null, $add_anchor = true ) {
     1694        global $wp_rewrite;
    16521695
     1696        $post = get_post( $post );
    16531697        $pagenum = (int) $pagenum;
    16541698
    16551699        $result = get_permalink( $post->ID );
     
    16571701        if ( 'newest' == get_option('default_comments_page') ) {
    16581702                if ( $pagenum != $max_page ) {
    16591703                        if ( $wp_rewrite->using_permalinks() )
    1660                                 $result = user_trailingslashit( trailingslashit($result) . 'comment-page-' . $pagenum, 'commentpaged');
     1704                                $result = user_trailingslashit( trailingslashit( $result ) . 'comment-page-' . $pagenum, 'commentpaged' );
    16611705                        else
    16621706                                $result = add_query_arg( 'cpage', $pagenum, $result );
    16631707                }
    16641708        } elseif ( $pagenum > 1 ) {
    16651709                if ( $wp_rewrite->using_permalinks() )
    1666                         $result = user_trailingslashit( trailingslashit($result) . 'comment-page-' . $pagenum, 'commentpaged');
     1710                        $result = user_trailingslashit( trailingslashit($result) . 'comment-page-' . $pagenum, 'commentpaged' );
    16671711                else
    16681712                        $result = add_query_arg( 'cpage', $pagenum, $result );
    16691713        }
    16701714
    1671         $result .= '#comments';
     1715        if ( $add_anchor ) {
     1716                $result .= '#comments';
     1717        }
    16721718
    1673         $result = apply_filters('get_comments_pagenum_link', $result);
     1719        $result = apply_filters( 'get_comments_pagenum_link', $result, $post, $pagenum, $max_page, $add_anchor );
    16741720
    16751721        return $result;
    16761722}