From 17a24f8400f000ec28352d731f220990db477757 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Fri, 8 Mar 2013 18:33:52 +0000 Subject: [PATCH] Make wp_link_pages() filterable. Add 'separator' argument. Simplify the function logic. props obenland, brianlayman. fixes #13578. git-svn-id: http://core.svn.wordpress.org/trunk@23653 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/post-template.php | 84 +++++++++++++++++++---------------- 1 file changed, 45 insertions(+), 39 deletions(-) diff --git a/wp-includes/post-template.php b/wp-includes/post-template.php index b5d73283c1..7117c33e33 100644 --- a/wp-includes/post-template.php +++ b/wp-includes/post-template.php @@ -602,15 +602,6 @@ function post_password_required( $post = null ) { * Quicktag one or more times). This tag must be within The Loop. * * The defaults for overwriting are: - * 'next_or_number' - Default is 'number' (string). Indicates whether page - * numbers should be used. Valid values are number and next. - * 'nextpagelink' - Default is 'Next Page' (string). Text for link to next page. - * of the bookmark. - * 'previouspagelink' - Default is 'Previous Page' (string). Text for link to - * previous page, if available. - * 'pagelink' - Default is '%' (String).Format string for page numbers. The % in - * the parameter string will be replaced with the page number, so Page % - * generates "Page 1", "Page 2", etc. Defaults to %, just the page number. * 'before' - Default is '

Pages:' (string). The html or text to prepend to * each bookmarks. * 'after' - Default is '

' (string). The html or text to append to each @@ -621,20 +612,36 @@ function post_password_required( $post = null ) { * 'link_after' - Default is '' (string). The html or text to append to each * Pages link inside the tag. Also appended to the current item, which * is not linked. + * 'next_or_number' - Default is 'number' (string). Indicates whether page + * numbers should be used. Valid values are number and next. + * 'separator' - Default is ' ' (string). Text used between pagination links. + * 'nextpagelink' - Default is 'Next Page' (string). Text for link to next page. + * of the bookmark. + * 'previouspagelink' - Default is 'Previous Page' (string). Text for link to + * previous page, if available. + * 'pagelink' - Default is '%' (String).Format string for page numbers. The % in + * the parameter string will be replaced with the page number, so Page % + * generates "Page 1", "Page 2", etc. Defaults to %, just the page number. + * 'echo' - Default is 1 (integer). When not 0, this triggers the HTML to be + * echoed and then returned. * * @since 1.2.0 - * @access private * * @param string|array $args Optional. Overwrite the defaults. * @return string Formatted output in HTML. */ -function wp_link_pages($args = '') { +function wp_link_pages( $args = '' ) { $defaults = array( - 'before' => '

' . __('Pages:'), 'after' => '

', - 'link_before' => '', 'link_after' => '', - 'next_or_number' => 'number', 'nextpagelink' => __('Next page'), - 'previouspagelink' => __('Previous page'), 'pagelink' => '%', - 'echo' => 1 + 'before' => '

' . __( 'Pages:' ), + 'after' => '

', + 'link_before' => '', + 'link_after' => '', + 'next_or_number' => 'number', + 'separator' => ' ', + 'nextpagelink' => __( 'Next page' ), + 'previouspagelink' => __( 'Previous page' ), + 'pagelink' => '%', + 'echo' => 1 ); $r = wp_parse_args( $args, $defaults ); @@ -647,35 +654,34 @@ function wp_link_pages($args = '') { if ( $multipage ) { if ( 'number' == $next_or_number ) { $output .= $before; - for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) { - $j = str_replace('%',$i,$pagelink); - $output .= ' '; - if ( ($i != $page) || ((!$more) && ($page==1)) ) { - $output .= _wp_link_page($i); - } - $output .= $link_before . $j . $link_after; - if ( ($i != $page) || ((!$more) && ($page==1)) ) - $output .= '
'; + for ( $i = 1; $i <= $numpages; $i++ ) { + $link = $link_before . str_replace( '%', $i, $pagelink ) . $link_after; + if ( $i != $page || ! $more && 1 == $page ) + $link = _wp_link_page( $i ) . $link . ''; + $link = apply_filters( 'wp_link_pages_link', $link, $i ); + $output .= $separator . $link; } $output .= $after; - } else { - if ( $more ) { - $output .= $before; - $i = $page - 1; - if ( $i && $more ) { - $output .= _wp_link_page($i); - $output .= $link_before. $previouspagelink . $link_after . ''; - } - $i = $page + 1; - if ( $i <= $numpages && $more ) { - $output .= _wp_link_page($i); - $output .= $link_before. $nextpagelink . $link_after . ''; - } - $output .= $after; + } elseif ( $more ) { + $output .= $before; + $i = $page - 1; + if ( $i ) { + $link = _wp_link_page( $i ) . $link_before . $previouspagelink . $link_after . ''; + $link = apply_filters( 'wp_link_pages_link', $link, $i ); + $output .= $separator . $link; } + $i = $page + 1; + if ( $i <= $numpages ) { + $link = _wp_link_page( $i ) . $link_before . $nextpagelink . $link_after . ''; + $link = apply_filters( 'wp_link_pages_link', $link, $i ); + $output .= $separator . $link; + } + $output .= $after; } } + $output = apply_filters( 'wp_link_pages', $output, $args ); + if ( $echo ) echo $output;