By default, wp_link_pages (the code which allows you to breakup posts into multiple pages) creates spaces between each number. Is there a way to remove these spaces via functions.php?


Just replace a> <a with a><a:

echo str_replace( 'a> <a', 'a><a', wp_link_pages( array ( 'echo' => FALSE ) ) );

If you want to remove the spaces around unlinked numbers too, I suggest a separate function in your theme’s functions.php to keep the code readable:

function trimmed_link_pages( $args = array () )
    $args['echo'] = FALSE;
    $links = wp_link_pages( $args );
    $links = str_replace(
        array ( 'a> ', ' <a', ':<a' ),
        array ( 'a>',  '<a',  ': <a' ),
    print $links;

Use it like wp_link_pages():

if ( have_posts() )
    while ( have_posts() )
        print '<h2><a href="' . get_permalink() . '">' . get_the_title() . '</a></h2>';

Related: Changing Link Attributes for Wp_Link_Pages.

  • That doesn't seem to be working for me, are you simply adding this to functions.php? – AndrettiMilas Jan 5 '13 at 19:28
  • I am using this instead of the naked wp_link_pages() in a theme. The function does not provide an output filter unfortunately. – fuxia Jan 5 '13 at 19:46
  • Out of curiosity, any idea how to remove the spaces around the current page also... since it is not linked? – AndrettiMilas Jan 5 '13 at 20:40
  • Thanks, but I actually can't get that new function to work for whatever reason. With my limited PHP knowledge, I assume it should work. How would you implement it? – AndrettiMilas Jan 5 '13 at 21:03
  • @siouxfan45 See my update. Tested, works. – fuxia Jan 5 '13 at 21:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.