web-dev-qa-db-fra.com

Utilisation de paginate_links () pour générer des paginations "1, 2, 3 ... 10, 20, 30, 40 ... 55"

J'ai trouvé ce code:

    // Get total number of pages
    global $wp_query;
    $total = $wp_query->max_num_pages;
    // Only paginate if we have more than one page
    if ( $total > 1 )  {
         // Get the current page
         if ( !$current_page = get_query_var('paged') )
              $current_page = 1;
         // Structure of “format” depends on whether we’re using pretty permalinks
        $permalinks = get_option('permalink_structure');
        $format = empty( $permalinks ) ? '&page=%#%' : 'page/%#%/';
        echo paginate_links(array(
              'base' => get_pagenum_link(1) . '%_%',
              'format' => $format,
              'current' => $current_page,
              'total' => $total,
              'mid_size' => 2,
              'type' => 'list'
        ));
    }

Cela fonctionne bien mais cela génère une pagination du type "1, 2, 3 ... LASTPAGENUMBER", j'ai vu des plugins générant des paginations du type "1, 2, 3 ... 19, 20, 30 ... LASTPAGENUMBER".

Cela peut-il être réalisé en utilisant la fonction paginate_links ()?

Je ne veux pas ajouter un plugin juste pour ce petit Tweak.

3
tryon

La fonction paginate_links() le fait par défaut. Le paramètre de contrôle est mid_size, qui détermine le nombre de liens de page autour de la page actuelle à afficher. La valeur par défaut est2.

Cela signifie que si vous avez 12 pages et que la page actuelle est Page 1 , la pagination ressemblera à ceci:

1 2 3 ... 12

Mais si la page en cours est - Page 6 , la pagination ressemblera à:

1 ... 4 5 6 7 8 ... 12

Je peux me tromper, mais je pense c'est comme ça que les plugins de liens de pagination doivent fonctionner.

Modifier

Désolé, j’ai mal compris votre question au début et je n’ai pas compris que vous vouliez afficher chaque dixième page dans vos liens de pagination.

Cette fonction n'a pas de paramètre intégré pour faire ce que vous voulez. Votre meilleur choix pourrait être de définir 'show_all' sur true, de changer 'type' en 'array', puis de construire la sortie vous-même, en parcourant les valeurs du tableau.

3
Chip Bennett

http://codex.wordpress.org/Function_Reference/paginate_links

Ce que vous recherchez, c'est 'end_size', ajoutez ceci au tableau d'arguments avec la valeur souhaitée.

2
Andre Lohan
$paged = (get_query_var('page')) ? get_query_var('page') : 1;

$args= new WP_Query(array(
        'post_type'=>'card',
        'posts_per_page' => 6,
        'paged' => $paged,
    ));  


    if($args->have_posts()) :

        while($args->have_posts())  : $args->the_post();

        $permalink=get_the_permalink(get_the_ID());
        $title=get_the_title();

        echo '<div class="col-md-4 card-details"><a href="'.$permalink.'">';
        echo '<div class="card-img">';the_post_thumbnail('thumbnail');echo '</div>';
        echo '<div class="card-title"><h4>'.$title.'</h4></a>';
        echo'</div>';
        echo '</div>';

        endwhile;

        $total_pages = $args->max_num_pages;

        ?>

        <div class="greetings-pagination col-md-12">

        <?php

        if ($total_pages > 1){

            $current_page = max(1, get_query_var('page'));

            echo paginate_links(array(
                'base' => get_pagenum_link(1) . '%_%',
                'format' => '/page/%#%',
                'current' => $current_page,
                'total' => $total_pages,
                'prev_text'    => __('prev'),
                'next_text'    => __('next'),
            ));
        }

    ?>  

    </div>

    <?php else :?>
    <h3><?php _e('404 Error&#58; Not Found', ''); ?></h3>
    <?php endif; ?>
    <?php wp_reset_postdata();?>  
0
MZK

Dans le site Web du développeur WordPress, il est fait mention de certains paramètres. C’est la page à propos de cette fonction.Vous pouvez vérifier 'taille_fin' pour plus d’informations.

Et j’ai toujours une question. J’utilise <?php echo paginate_links(); ?> dans mon modèle de thème et cela fonctionne parfaitement (comme le montre l’image) .  enter image description here 

Mais je ne suis pas sûr que cela causerait d'autres problèmes.

0
Mass Carl