WordPress.org

Make WordPress Core

Ticket #13578: wp_link_pages.diff

File wp_link_pages.diff, 4.8 KB (added by kobenland, 2 years ago)

Enhancements of wp_link_pages()

  • Applications/MAMP/htdocs/wptrunk/wp-includes/post-template.php

     
    605605 * Quicktag one or more times). This tag must be within The Loop. 
    606606 * 
    607607 * The defaults for overwriting are: 
    608  * 'next_or_number' - Default is 'number' (string). Indicates whether page 
    609  *      numbers should be used. Valid values are number and next. 
    610  * 'nextpagelink' - Default is 'Next Page' (string). Text for link to next page. 
    611  *      of the bookmark. 
    612  * 'previouspagelink' - Default is 'Previous Page' (string). Text for link to 
    613  *      previous page, if available. 
    614  * 'pagelink' - Default is '%' (String).Format string for page numbers. The % in 
    615  *      the parameter string will be replaced with the page number, so Page % 
    616  *      generates "Page 1", "Page 2", etc. Defaults to %, just the page number. 
    617608 * 'before' - Default is '<p> Pages:' (string). The html or text to prepend to 
    618609 *      each bookmarks. 
    619610 * 'after' - Default is '</p>' (string). The html or text to append to each 
     
    624615 * 'link_after' - Default is '' (string). The html or text to append to each 
    625616 *      Pages link inside the <a> tag. Also appended to the current item, which 
    626617 *      is not linked. 
     618 * 'next_or_number' - Default is 'number' (string). Indicates whether page 
     619 *      numbers should be used. Valid values are number and next. 
     620 * 'separator' - Default is ' ' (string). Text used only between numbers. 
     621 * 'nextpagelink' - Default is 'Next Page' (string). Text for link to next page. 
     622 *      of the bookmark. 
     623 * 'previouspagelink' - Default is 'Previous Page' (string). Text for link to 
     624 *      previous page, if available. 
     625 * 'pagelink' - Default is '%' (String).Format string for page numbers. The % in 
     626 *      the parameter string will be replaced with the page number, so Page % 
     627 *      generates "Page 1", "Page 2", etc. Defaults to %, just the page number. 
     628 * 'echo' - Default is 1 (integer). When not 0, this triggers the HTML to be echoed and then returned. 
    627629 * 
    628630 * @since 1.2.0 
    629  * @access private 
    630631 * 
    631632 * @param string|array $args Optional. Overwrite the defaults. 
    632633 * @return string Formatted output in HTML. 
     
    631632 * @param string|array $args Optional. Overwrite the defaults. 
    632633 * @return string Formatted output in HTML. 
    633634 */ 
    634 function wp_link_pages($args = '') { 
     635function wp_link_pages( $args = '' ) { 
    635636        $defaults = array( 
    636                 'before' => '<p>' . __('Pages:'), 'after' => '</p>', 
    637                 'link_before' => '', 'link_after' => '', 
    638                 'next_or_number' => 'number', 'nextpagelink' => __('Next page'), 
    639                 'previouspagelink' => __('Previous page'), 'pagelink' => '%', 
     637                'before' => '<p>' . __('Pages:'), 
     638                'after' => '</p>', 
     639                'link_before' => '', 
     640                'link_after' => '', 
     641                'separator' => ' ', 
     642                'next_or_number' => 'number', 
     643                'nextpagelink' => __('Next page'), 
     644                'previouspagelink' => __('Previous page'), 
     645                'pagelink' => '%', 
    640646                'echo' => 1 
    641647        ); 
    642648 
     
    650656        if ( $multipage ) { 
    651657                if ( 'number' == $next_or_number ) { 
    652658                        $output .= $before; 
    653                         for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) { 
    654                                 $j = str_replace('%',$i,$pagelink); 
    655                                 $output .= ' '; 
     659                        for ( $i = 1; $i <= $numpages; $i++ ) { 
     660                                $link = $link_before . str_replace( '%', $i, $pagelink ) . $link_after; 
    656661                                if ( ($i != $page) || ((!$more) && ($page==1)) ) { 
    657                                         $output .= _wp_link_page($i); 
     662                                        $link = _wp_link_page( $i ) . $link . '</a>'; 
    658663                                } 
    659                                 $output .= $link_before . $j . $link_after; 
    660                                 if ( ($i != $page) || ((!$more) && ($page==1)) ) 
    661                                         $output .= '</a>'; 
     664                                $link = apply_filters( 'wp_link_pages_link', $link, $i ); 
     665                                $output .= $separator . $link; 
    662666                        } 
    663667                        $output .= $after; 
    664668                } else { 
     
    666670                                $output .= $before; 
    667671                                $i = $page - 1; 
    668672                                if ( $i && $more ) { 
    669                                         $output .= _wp_link_page($i); 
    670                                         $output .= $link_before. $previouspagelink . $link_after . '</a>'; 
     673                                        $link = _wp_link_page( $i ) . $link_before. $previouspagelink . $link_after . '</a>'; 
     674                                        $output .= apply_filters( 'wp_link_pages_link', $link, $i ); 
    671675                                } 
    672676                                $i = $page + 1; 
    673677                                if ( $i <= $numpages && $more ) { 
    674                                         $output .= _wp_link_page($i); 
    675                                         $output .= $link_before. $nextpagelink . $link_after . '</a>'; 
     678                                        $link = _wp_link_page( $i ) . $link_before. $nextpagelink . $link_after . '</a>'; 
     679                                        // Only add the separator when we have a previous link 
     680                                        if ( strpos( $output, $previouspagelink ) ) 
     681                                                $output .= $separator; 
     682                                        $output .= apply_filters( 'wp_link_pages_link', $link, $i ); 
    676683                                } 
    677684                                $output .= $after; 
    678685                        } 
     
    678685                        } 
    679686                } 
    680687        } 
     688         
     689        $output = apply_filters( 'wp_link_pages', $output, $args ); 
    681690 
    682691        if ( $echo ) 
    683692                echo $output;