1

I'm trying to make something more meaningful out of the wp_link_pages() result:

$paged_page_nav = wp_link_pages( array( 'echo' => false ) );
// Now let's wrap the nav inside <li>-elements
$paged_page_nav = str_replace( '<a', '<li class="'.$classes.'"><a', $paged_page_nav );
$paged_page_nav = str_replace( '/a>', '/a></li>', $paged_page_nav );

// here I'd need to wrap the currently displayed page element

echo '<ul>'.$pages_page_nav.'</ul>';

Currently my link pages (numbered nav/pagination) displays like this:

<!-- assuming we display page(d) 2/5 -->
<ul>
    <li><a href="...">1</a></li>
    2 <!-- This is the currently displayed paged, wrapped in nothing -->
    <li><a href="...">3</a></li>
    <li><a href="...">4</a></li>
    <li><a href="...">5</a></li>
</ul>

2 Answers 2

3

I wouldn’t use WordPress’ internal function.
We had a very similar question recently: How to style current page number (wp_link_pages)? I wrote a small but flexible function to replace wp_link_pages(). It is probably easier to extend this than hacking around the return value of the native function.

2
  • thanks for the link, I couldn't find anything useable myself. Using the 'wp_link_pages_args' filter is a pretty smart move. Added the "if you build something better, make native filters available"-thought to my tool box. Thanks again, learned something today. :)
    – kaiser
    Commented May 16, 2011 at 23:17
  • @kaiser I just tagged the other post with wp-link-pages. Now we have two post posts for this tag. :)
    – fuxia
    Commented May 17, 2011 at 10:23
3

you could try and use the 'link_before' and 'link_after' parameter to get a handle for some str_replace; in the example, i used a <span>:

$paged_page_nav = wp_link_pages( 
  array( 
    'before' =>'', 
    'after' => '', 
    'link_before' => '<span>', 
    'link_after' => '</span>', 
    'echo' => false 
  ) 
); 
// Now let's wrap the nav inside <li>-elements 
  $paged_page_nav = str_replace( '<a', '<li class="'.$classes.'"><a', $paged_page_nav ); 
  $paged_page_nav = str_replace( '</span></a>', '</a></li>', $paged_page_nav );
  $paged_page_nav = str_replace( '"><span>', '">', $paged_page_nav ); 
// here I'd need to wrap the currently displayed page element, which could even get a different class      
  $paged_page_nav = str_replace( '<span>', '<li class="'.$classes.'">', $paged_page_nav ); 
  $paged_page_nav = str_replace( '</span>', '</li>', $paged_page_nav ); 
echo '<ul>'.$paged_page_nav.'</ul>';
1
  • thanks @micheal, i have an another question. hoq can i grab only next page url ? Commented Dec 12, 2014 at 15:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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