wp_link_page – wrap current page element

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>

Related posts

Leave a Reply

2 comments

  1. 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>';