WordPress.org

Make WordPress Core

Ticket #16973: 16973.4.patch

File 16973.4.patch, 4.8 KB (added by kobenland, 2 years ago)
  • wp-includes/link-template.php

     
    14291429} 
    14301430 
    14311431/** 
     1432 * Retrieve link to a multipage part. 
     1433 * 
     1434 * @since 3.2.0 
     1435 * 
     1436 * @param int $page Optional. 
     1437 * @return string 
     1438 */ 
     1439function get_multipage_link( $page = 1 ) { 
     1440        global $post, $wp_rewrite; 
     1441 
     1442        if ( 1 == $page ) { 
     1443                $url = get_permalink(); 
     1444        } else { 
     1445                if ( '' == get_option('permalink_structure') || in_array( $post->post_status, array( 'draft', 'pending') ) ) 
     1446                        $url = add_query_arg( 'page', $page, get_permalink() ); 
     1447                elseif ( 'page' == get_option( 'show_on_front' ) && get_option('page_on_front') == $post->ID ) 
     1448                        $url = trailingslashit( get_permalink() ) . user_trailingslashit( $wp_rewrite->pagination_base . "/$page", 'single_paged' ); 
     1449                else 
     1450                        $url = trailingslashit( get_permalink() ) . user_trailingslashit( $page, 'single_paged' ); 
     1451        } 
     1452 
     1453        return $url; 
     1454} 
     1455 
     1456/** 
    14321457 * Retrieve next posts page link. 
    14331458 * 
    14341459 * Backported from 2.1.3 to 2.0.10. 
  • wp-includes/post-template.php

     
    626626 *      is not linked. 
    627627 * 
    628628 * @since 1.2.0 
    629  * @access private 
    630629 * 
    631630 * @param string|array $args Optional. Overwrite the defaults. 
    632631 * @return string Formatted output in HTML. 
     
    632631 * @return string Formatted output in HTML. 
    633632 */ 
    634633function wp_link_pages($args = '') { 
     634        global $page, $numpages, $multipage, $more, $pagenow; 
     635 
     636        if ( !$multipage ) 
     637                return false; 
     638 
    635639        $defaults = array( 
    636640                'before' => '<p>' . __('Pages:'), 'after' => '</p>', 
    637641                'link_before' => '', 'link_after' => '', 
     
    644648        $r = apply_filters( 'wp_link_pages_args', $r ); 
    645649        extract( $r, EXTR_SKIP ); 
    646650 
    647         global $page, $numpages, $multipage, $more, $pagenow; 
     651        $output = ''; 
     652 
     653        if ( 'number' == $next_or_number ) { 
     654                $output .= $before; 
     655                for ( $i = 1; $i <= $numpages; $i++ ) { 
     656                        $link = $link_before . str_replace( '%', $i, $pagelink ) . $link_after; 
    648657 
    649         $output = ''; 
    650         if ( $multipage ) { 
    651                 if ( 'number' == $next_or_number ) { 
    652                         $output .= $before; 
    653                         for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) { 
    654                                 $j = str_replace('%',$i,$pagelink); 
    655                                 $output .= ' '; 
    656                                 if ( ($i != $page) || ((!$more) && ($page==1)) ) { 
    657                                         $output .= _wp_link_page($i); 
    658                                 } 
    659                                 $output .= $link_before . $j . $link_after; 
    660                                 if ( ($i != $page) || ((!$more) && ($page==1)) ) 
    661                                         $output .= '</a>'; 
     658                        if ( ( $i != $page ) || ( !$more && 1 == $page ) ) { 
     659                                $link = '<a href="' . esc_url( get_multipage_link( $i ) ) . '">' . $link . '</a>'; 
    662660                        } 
    663                         $output .= $after; 
    664                 } else { 
    665                         if ( $more ) { 
    666                                 $output .= $before; 
    667                                 $i = $page - 1; 
    668                                 if ( $i && $more ) { 
    669                                         $output .= _wp_link_page($i); 
    670                                         $output .= $link_before. $previouspagelink . $link_after . '</a>'; 
    671                                 } 
    672                                 $i = $page + 1; 
    673                                 if ( $i <= $numpages && $more ) { 
    674                                         $output .= _wp_link_page($i); 
    675                                         $output .= $link_before. $nextpagelink . $link_after . '</a>'; 
    676                                 } 
    677                                 $output .= $after; 
    678                         } 
     661                        $link = apply_filters( 'wp_link_pages_link', $link, $i ); 
     662                        $output .= ' ' . $link; 
     663                } 
     664                $output .= $after; 
     665        } elseif ( $more ) { 
     666                $output .= $before; 
     667                $i = $page - 1; 
     668                if ( $i ) { 
     669                        $link = '<a href="' . esc_url( get_multipage_link( $i ) ) . '">' .$link_before. $previouspagelink . $link_after . '</a>'; 
     670                        $output .= apply_filters( 'wp_link_pages_link', $link, $i ); 
     671                } 
     672                $i = $page + 1; 
     673                if ( $i <= $numpages ) { 
     674                        $link = '<a href="' . esc_url( get_multipage_link( $i ) ) . '">' . $link_before. $nextpagelink . $link_after . '</a>'; 
     675                        $output .= apply_filters( 'wp_link_pages_link', $link, $i ); 
    679676                } 
     677                $output .= $after; 
    680678        } 
     679         
     680        $output = apply_filters( 'wp_link_pages', $output, $args ); 
    681681 
    682682        if ( $echo ) 
    683683                echo $output; 
     
    685685        return $output; 
    686686} 
    687687 
    688 /** 
    689  * Helper function for wp_link_pages(). 
    690  * 
    691  * @since 3.1.0 
    692  * @access private 
    693  * 
    694  * @param int $i Page number. 
    695  * @return string Link. 
    696  */ 
    697 function _wp_link_page( $i ) { 
    698         global $post, $wp_rewrite; 
    699  
    700         if ( 1 == $i ) { 
    701                 $url = get_permalink(); 
    702         } else { 
    703                 if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) ) 
    704                         $url = add_query_arg( 'page', $i, get_permalink() ); 
    705                 elseif ( 'page' == get_option('show_on_front') && get_option('page_on_front') == $post->ID ) 
    706                         $url = trailingslashit(get_permalink()) . user_trailingslashit("$wp_rewrite->pagination_base/" . $i, 'single_paged'); 
    707                 else 
    708                         $url = trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged'); 
    709         } 
    710  
    711         return '<a href="' . esc_url( $url ) . '">'; 
    712 } 
    713  
    714688// 
    715689// Post-meta: Custom per-post fields. 
    716690//