Bonjour à tous, j'essaye de convertir ma pagination actuelle:
Prev 1 2 3 Next
Page 1 of 2 -->
Mon code actuel ressemble à ceci:
if( ! function_exists( 'my_pagination' ) ) {
function my_pagination() {
global $wp_query;
$big = 999999999; // This needs to be an unlikely integer
$paginate_links = paginate_links( array(
'base' => str_replace( $big, '%#%', get_pagenum_link($big) ),
'current' => max( 1, get_query_var('paged') ),
'total' => $wp_query->max_num_pages,
'mid_size' => 0,
'prev_next' => True,
'prev_text' => __('<span class="fa fa-long-arrow-left" aria-hidden="true"></span>'),
'next_text' => __('<span class="fa fa-long-arrow-right" aria-hidden="true"></span>'),
'type' => 'list'
) );
if ( $paginate_links ) {
echo '<div class="pagination">';
echo $paginate_links;
echo '</div>';
}
}
}
Je n'ai pas beaucoup d'expérience avec la pagination dans WordPress jusqu'à présent, c'est-à-dire. Je pensais que cela me simplifierait la tâche et que je changerais simplement the_size en 0, puis utiliserais CSS avant et après pour ajouter le page of
, comme suit:
.pagination li:first-child:before {
content: "Page "
}
.pagination li:first-child:after {
content: " of"
}
Mais alors je remarque que WordPress insère:
<li><span class="page-numbers dots">…</span></li>
En raison du 'mid_size' => 0
, et bien évidemment, je pourrais simplement utiliser li:nth(2) { display: none; }
dans le CSS. Mais un autre problème est que le dernier numéro de page est a href
, ce que je ne souhaite pas non plus. Utiliser toutes ces méthodes de travail autour de vous semble alors être un travail bâclé et plutôt à faire dans le codex plutôt que dans le CSS. J'ai essayé plusieurs solutions sans succès.
Comment désactiver l'ajout de:
<span class="page-numbers dots">…</span>
?<a href>
sur le dernier numéro de page?Voici une solution de contournement:
Commencez par définir le type de sortie paginate_links()
en:
'type' => 'array',
Ensuite, nous pouvons collecter les parties previous , current et next de la sortie paginate_links()
.
Voici un exemple simple où nous ciblons les classes pertinentes:
$next = '';
$current = '';
$prev = '';
foreach( (array) $paginate_links as $link )
{
if( false !== strpos( $link, 'prev ' ) )
$prev = $link;
elseif( false !== strpos( $link, ' current' ) )
$current = $link;
elseif( false !== strpos( $link, 'next ' ) )
$next = $link;
}
Enfin, nous pouvons construire la sortie selon les besoins:
! empty( $current ) && printf(
'<div class="pagination">%s %s %s %s %d %s</div>',
$prev,
esc_html__( 'Page', 'my-domain' ),
$current,
esc_html__( 'of', 'my-domain' ),
$wp_query->max_num_pages,
$next
);