WordPress.org

Make WordPress Core

Ticket #16973: 16973.2.diff

File 16973.2.diff, 4.4 KB (added by scribu, 3 years ago)

clearer logic

  • wp-includes/post-template.php

     
    618618 * @return string Formatted output in HTML. 
    619619 */ 
    620620function wp_link_pages($args = '') { 
     621        global $page, $numpages, $multipage, $more, $pagenow; 
     622 
     623        if ( !$multipage ) 
     624                return false; 
     625 
    621626        $defaults = array( 
    622627                'before' => '<p>' . __('Pages:'), 'after' => '</p>', 
    623628                'link_before' => '', 'link_after' => '', 
     
    630635        $r = apply_filters( 'wp_link_pages_args', $r ); 
    631636        extract( $r, EXTR_SKIP ); 
    632637 
    633         global $page, $numpages, $multipage, $more, $pagenow; 
    634  
    635638        $output = ''; 
    636         if ( $multipage ) { 
    637                 if ( 'number' == $next_or_number ) { 
    638                         $output .= $before; 
    639                         for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) { 
    640                                 $j = str_replace('%',$i,$pagelink); 
    641                                 $output .= ' '; 
    642                                 if ( ($i != $page) || ((!$more) && ($page==1)) ) { 
    643                                         $output .= _wp_link_page($i); 
    644                                 } 
    645                                 $output .= $link_before . $j . $link_after; 
    646                                 if ( ($i != $page) || ((!$more) && ($page==1)) ) 
    647                                         $output .= '</a>'; 
     639 
     640        if ( 'number' == $next_or_number ) { 
     641                $output .= $before; 
     642                for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) { 
     643                        $j = str_replace('%',$i,$pagelink); 
     644                        $output .= ' '; 
     645                        if ( ($i != $page) || ((!$more) && ($page==1)) ) { 
     646                                $output .= '<a href="' . esc_url( get_multipage_link( $i ) ) . '">'; 
    648647                        } 
    649                         $output .= $after; 
    650                 } else { 
    651                         if ( $more ) { 
    652                                 $output .= $before; 
    653                                 $i = $page - 1; 
    654                                 if ( $i && $more ) { 
    655                                         $output .= _wp_link_page($i); 
    656                                         $output .= $link_before. $previouspagelink . $link_after . '</a>'; 
    657                                 } 
    658                                 $i = $page + 1; 
    659                                 if ( $i <= $numpages && $more ) { 
    660                                         $output .= _wp_link_page($i); 
    661                                         $output .= $link_before. $nextpagelink . $link_after . '</a>'; 
    662                                 } 
    663                                 $output .= $after; 
    664                         } 
     648                        $output .= $link_before . $j . $link_after; 
     649                        if ( ($i != $page) || ((!$more) && ($page==1)) ) 
     650                                $output .= '</a>'; 
    665651                } 
     652                $output .= $after; 
     653        } elseif ( $more ) { 
     654                $output .= $before; 
     655                $i = $page - 1; 
     656                if ( $i && $more ) { 
     657                        $output .= '<a href="' . esc_url( get_multipage_link( $i ) ) . '">'; 
     658                        $output .= $link_before. $previouspagelink . $link_after . '</a>'; 
     659                } 
     660                $i = $page + 1; 
     661                if ( $i <= $numpages && $more ) { 
     662                        $output .= '<a href="' . esc_url( get_multipage_link( $i ) ) . '">'; 
     663                        $output .= $link_before. $nextpagelink . $link_after . '</a>'; 
     664                } 
     665                $output .= $after; 
    666666        } 
    667667 
    668668        if ( $echo ) 
     
    671671        return $output; 
    672672} 
    673673 
    674 /** 
    675  * Helper function for wp_link_pages(). 
    676  * 
    677  * @since 3.1.0 
    678  * @access private 
    679  * 
    680  * @param int $i Page number. 
    681  * @return string Link. 
    682  */ 
    683 function _wp_link_page( $i ) { 
    684         global $post, $wp_rewrite; 
    685  
    686         if ( 1 == $i ) { 
    687                 $url = get_permalink(); 
    688         } else { 
    689                 if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) ) 
    690                         $url = add_query_arg( 'page', $i, get_permalink() ); 
    691                 elseif ( 'page' == get_option('show_on_front') && get_option('page_on_front') == $post->ID ) 
    692                         $url = trailingslashit(get_permalink()) . user_trailingslashit("$wp_rewrite->pagination_base/" . $i, 'single_paged'); 
    693                 else 
    694                         $url = trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged'); 
    695         } 
    696  
    697         return '<a href="' . esc_url( $url ) . '">'; 
    698 } 
    699  
    700674// 
    701675// Post-meta: Custom per-post fields. 
    702676// 
  • wp-includes/link-template.php

     
    15321532} 
    15331533 
    15341534/** 
     1535 * Retrieve link to a multipage part. 
     1536 * 
     1537 * @since 3.2.0 
     1538 * 
     1539 * @param int $page Optional. 
     1540 * @return string 
     1541 */ 
     1542function get_multipage_link( $page = 1 ) { 
     1543        global $post, $wp_rewrite; 
     1544 
     1545        if ( 1 == $page ) { 
     1546                $url = get_permalink(); 
     1547        } else { 
     1548                if ( '' == get_option('permalink_structure') || in_array( $post->post_status, array( 'draft', 'pending') ) ) 
     1549                        $url = add_query_arg( 'page', $page, get_permalink() ); 
     1550                elseif ( 'page' == get_option( 'show_on_front' ) && get_option('page_on_front') == $post->ID ) 
     1551                        $url = trailingslashit( get_permalink() ) . user_trailingslashit( $wp_rewrite->pagination_base . "/$page", 'single_paged' ); 
     1552                else 
     1553                        $url = trailingslashit( get_permalink() ) . user_trailingslashit( $page, 'single_paged' ); 
     1554        } 
     1555 
     1556        return $url; 
     1557} 
     1558 
     1559/** 
    15351560 * Retrieve next posts pages link. 
    15361561 * 
    15371562 * Backported from 2.1.3 to 2.0.10.