web-dev-qa-db-fra.com

wp_link_page - retourne l'élément de la page en cours

J'essaie de rendre quelque chose de plus significatif à partir du résultat wp_link_pages() :

$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>';

Actuellement, mes pages de liens (nav/pagination numérotées) s’affiche comme ceci:

<!-- 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>
1
kaiser

Je n’utiliserais pas la fonction interne de WordPress.
Nous avions récemment une question très similaire: Comment styler le numéro de page actuel (wp_link_pages)? J'ai écrit une fonction petite mais flexible pour remplacer wp_link_pages(). Il est probablement plus facile d’étendre cela que de pirater la valeur de retour de la fonction native.

3
fuxia

vous pouvez essayer d'utiliser les paramètres 'link_before' et 'link_after' pour obtenir un descripteur pour un certain str_replace; dans l'exemple, j'ai utilisé un <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>';
3
Michael