web-dev-qa-db-fra.com

Pagination ajoutant des points de numéros de page lors de l'utilisation de 'mid_size' =>

Bonjour à tous, j'essaye de convertir ma pagination actuelle:

  • à partir de: 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?
  • Ou comment recommandez-vous que je modifie le tableau actuel?
4
Simon Hayter

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
);
3
birgire