WordPress.org

Make WordPress Core

Ticket #13578: 13578.3.diff

File 13578.3.diff, 4.8 KB (added by SergeyBiryukov, 5 years ago)
  • wp-includes/post-template.php

     
    602602 * Quicktag one or more times). This tag must be within The Loop.
    603603 *
    604604 * The defaults for overwriting are:
    605  * 'next_or_number' - Default is 'number' (string). Indicates whether page
    606  *      numbers should be used. Valid values are number and next.
    607  * 'nextpagelink' - Default is 'Next Page' (string). Text for link to next page.
    608  *      of the bookmark.
    609  * 'previouspagelink' - Default is 'Previous Page' (string). Text for link to
    610  *      previous page, if available.
    611  * 'pagelink' - Default is '%' (String).Format string for page numbers. The % in
    612  *      the parameter string will be replaced with the page number, so Page %
    613  *      generates "Page 1", "Page 2", etc. Defaults to %, just the page number.
    614605 * 'before' - Default is '<p> Pages:' (string). The html or text to prepend to
    615606 *      each bookmarks.
    616607 * 'after' - Default is '</p>' (string). The html or text to append to each
     
    621612 * 'link_after' - Default is '' (string). The html or text to append to each
    622613 *      Pages link inside the <a> tag. Also appended to the current item, which
    623614 *      is not linked.
     615 * 'next_or_number' - Default is 'number' (string). Indicates whether page
     616 *      numbers should be used. Valid values are number and next.
     617 * 'separator' - Default is ' ' (string). Text used between pagination links.
     618 * 'nextpagelink' - Default is 'Next Page' (string). Text for link to next page.
     619 *      of the bookmark.
     620 * 'previouspagelink' - Default is 'Previous Page' (string). Text for link to
     621 *      previous page, if available.
     622 * 'pagelink' - Default is '%' (String).Format string for page numbers. The % in
     623 *      the parameter string will be replaced with the page number, so Page %
     624 *      generates "Page 1", "Page 2", etc. Defaults to %, just the page number.
     625 * 'echo' - Default is 1 (integer). When not 0, this triggers the HTML to be
     626 *      echoed and then returned.
    624627 *
    625628 * @since 1.2.0
    626  * @access private
    627629 *
    628630 * @param string|array $args Optional. Overwrite the defaults.
    629631 * @return string Formatted output in HTML.
    630632 */
    631 function wp_link_pages($args = '') {
     633function wp_link_pages( $args = '' ) {
    632634        $defaults = array(
    633                 'before' => '<p>' . __('Pages:'), 'after' => '</p>',
    634                 'link_before' => '', 'link_after' => '',
    635                 'next_or_number' => 'number', 'nextpagelink' => __('Next page'),
    636                 'previouspagelink' => __('Previous page'), 'pagelink' => '%',
    637                 'echo' => 1
     635                'before'           => '<p>' . __( 'Pages:' ),
     636                'after'            => '</p>',
     637                'link_before'      => '',
     638                'link_after'       => '',
     639                'next_or_number'   => 'number',
     640                'separator'        => ' ',
     641                'nextpagelink'     => __( 'Next page' ),
     642                'previouspagelink' => __( 'Previous page' ),
     643                'pagelink'         => '%',
     644                'echo'             => 1
    638645        );
    639646
    640647        $r = wp_parse_args( $args, $defaults );
     
    647654        if ( $multipage ) {
    648655                if ( 'number' == $next_or_number ) {
    649656                        $output .= $before;
    650                         for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) {
    651                                 $j = str_replace('%',$i,$pagelink);
    652                                 $output .= ' ';
    653                                 if ( ($i != $page) || ((!$more) && ($page==1)) ) {
    654                                         $output .= _wp_link_page($i);
    655                                 }
    656                                 $output .= $link_before . $j . $link_after;
    657                                 if ( ($i != $page) || ((!$more) && ($page==1)) )
    658                                         $output .= '</a>';
     657                        for ( $i = 1; $i <= $numpages; $i++ ) {
     658                                $link = $link_before . str_replace( '%', $i, $pagelink ) . $link_after;
     659                                if ( $i != $page || ! $more && 1 == $page )
     660                                        $link = _wp_link_page( $i ) . $link . '</a>';
     661                                $link = apply_filters( 'wp_link_pages_link', $link, $i );
     662                                $output .= $separator . $link;
    659663                        }
    660664                        $output .= $after;
    661                 } else {
    662                         if ( $more ) {
    663                                 $output .= $before;
    664                                 $i = $page - 1;
    665                                 if ( $i && $more ) {
    666                                         $output .= _wp_link_page($i);
    667                                         $output .= $link_before. $previouspagelink . $link_after . '</a>';
    668                                 }
    669                                 $i = $page + 1;
    670                                 if ( $i <= $numpages && $more ) {
    671                                         $output .= _wp_link_page($i);
    672                                         $output .= $link_before. $nextpagelink . $link_after . '</a>';
    673                                 }
    674                                 $output .= $after;
     665                } elseif ( $more ) {
     666                        $output .= $before;
     667                        $i = $page - 1;
     668                        if ( $i && $more ) {
     669                                $link = _wp_link_page( $i ) . $link_before . $previouspagelink . $link_after . '</a>';
     670                                $link = apply_filters( 'wp_link_pages_link', $link, $i );
     671                                $output .= $separator . $link;
    675672                        }
     673                        $i = $page + 1;
     674                        if ( $i <= $numpages && $more ) {
     675                                $link = _wp_link_page( $i ) . $link_before . $nextpagelink . $link_after . '</a>';
     676                                $link = apply_filters( 'wp_link_pages_link', $link, $i );
     677                                $output .= $separator . $link;
     678                        }
     679                        $output .= $after;
    676680                }
    677681        }
    678682
     683        $output = apply_filters( 'wp_link_pages', $output, $args );
     684
    679685        if ( $echo )
    680686                echo $output;
    681687