WordPress.org

Make WordPress Core

Ticket #10558: wp_link_pages-both.diff

File wp_link_pages-both.diff, 4.4 KB (added by simonwheatley, 9 years ago)

Diff to introduce an argument of both into wp_link_pages whereupon WP would use both next/prev links AND the page number links (Edited to introduce spacing rather than have the links hard against one another

  • Users/simon/Projects/StephenFry/site/wordpress/wp-includes/post-template.php

     
    533533 *
    534534 * The defaults for overwriting are:
    535535 * 'next_or_number' - Default is 'number' (string). Indicates whether page
    536  *      numbers should be used. Valid values are number and next.
     536 *      numbers should be used. Valid values are number, next or both (uses
     537 *              page numbers and a next prev link).
    537538 * 'nextpagelink' - Default is 'Next Page' (string). Text for link to next page.
    538539 *      of the bookmark.
    539540 * 'previouspagelink' - Default is 'Previous Page' (string). Text for link to
     
    578579
    579580        $output = '';
    580581        if ( $multipage ) {
    581                 if ( 'number' == $next_or_number ) {
     582                if ( $more ) {
    582583                        $output .= $before;
    583                         for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) {
    584                                 $j = str_replace('%',"$i",$pagelink);
    585                                 $output .= ' ';
    586                                 if ( ($i != $page) || ((!$more) && ($page==1)) ) {
    587                                         if ( 1 == $i ) {
    588                                                 $output .= '<a href="' . get_permalink() . '">';
    589                                         } else {
    590                                                 if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) )
    591                                                         $output .= '<a href="' . get_permalink() . '&amp;page=' . $i . '">';
    592                                                 else
    593                                                         $output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged') . '">';
    594                                         }
    595 
    596                                 }
    597                                 $output .= $link_before;
    598                                 $output .= $j;
    599                                 $output .= $link_after;
    600                                 if ( ($i != $page) || ((!$more) && ($page==1)) )
    601                                         $output .= '</a>';
    602                         }
    603                         $output .= $after;
    604                 } else {
    605                         if ( $more ) {
    606                                 $output .= $before;
     584                        if ( 'both' == $next_or_number ) {
    607585                                $i = $page - 1;
    608586                                if ( $i && $more ) {
    609587                                        if ( 1 == $i ) {
     
    612590                                                if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) )
    613591                                                        $output .= '<a href="' . get_permalink() . '&amp;page=' . $i . '">' . $link_before. $previouspagelink . $link_after . '</a>';
    614592                                                else
    615                                                         $output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged') . '">' . $link_before. $previouspagelink . $link_after . '</a>';
     593                                                        $output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged') . '">' . $link_before. $previouspagelink . $link_after . '</a> ';
    616594                                        }
    617595                                }
     596                        }
     597                        if ( 'number' == $next_or_number || 'both' == $next_or_number ) {
     598                                for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) {
     599                                        $j = str_replace('%',"$i",$pagelink);
     600                                        $output .= ' ';
     601                                        if ( ($i != $page) || ((!$more) && ($page==1)) ) {
     602                                                if ( 1 == $i ) {
     603                                                        $output .= '<a href="' . get_permalink() . '">';
     604                                                } else {
     605                                                        if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) )
     606                                                                $output .= '<a href="' . get_permalink() . '&amp;page=' . $i . '">';
     607                                                        else
     608                                                                $output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged') . '">';
     609                                                }
     610
     611                                        }
     612                                        $output .= $link_before;
     613                                        $output .= $j;
     614                                        $output .= $link_after;
     615                                        if ( ($i != $page) || ((!$more) && ($page==1)) )
     616                                                $output .= '</a> ';
     617                                }
     618                        }
     619                        if ( 'both' == $next_or_number ) {
    618620                                $i = $page + 1;
    619                                 if ( $i <= $numpages && $more ) {
     621                                if ( $i <= $numpages ) {
    620622                                        if ( 1 == $i ) {
    621623                                                $output .= '<a href="' . get_permalink() . '">' . $link_before. $nextpagelink . $link_after . '</a>';
    622624                                        } else {
    623625                                                if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) )
    624626                                                        $output .= '<a href="' . get_permalink() . '&amp;page=' . $i . '">' . $link_before. $nextpagelink . $link_after . '</a>';
    625627                                                else
    626                                                         $output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged') . '">' . $link_before. $nextpagelink . $link_after . '</a>';
     628                                                        $output .= '<a href="' . trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged') . '">' . $link_before. $nextpagelink . $link_after . '</a> ';
    627629                                        }
    628630                                }
    629                                 $output .= $after;
    630631                        }
     632                        $output .= $after;
    631633                }
     634               
    632635        }
     636       
     637        $output = apply_filters( 'wp_link_pages', $output, $r );
    633638
    634639        if ( $echo )
    635640                echo $output;