Utilizzo di paginate_links() per generare paginazioni del tipo "1, 2, 3 ... 10, 20, 30, 40... 55"

12 nov 2011, 21:08:36
Visualizzazioni: 30.5K
Voti: 3

Ho trovato questo codice:

    // Ottieni il numero totale di pagine
    global $wp_query;
    $total = $wp_query->max_num_pages;
    // Pagina solo se abbiamo più di una pagina
    if ( $total > 1 )  {
         // Ottieni la pagina corrente
         if ( !$current_page = get_query_var('paged') )
              $current_page = 1;
         // La struttura del "format" dipende se stiamo usando i permalink
        $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'
        ));
    }

Funziona correttamente ma genera una paginazione del tipo "1, 2, 3 ... ULTIMAPAGINA", ho visto plugin che generano paginazioni come questa "1, 2, 3... 19, 20, 30 ... ULTIMAPAGINA".

È possibile ottenere questo risultato utilizzando la funzione paginate_links()?

Non voglio aggiungere un plugin solo per questa piccola modifica.

0
Tutte le risposte alla domanda 4
0

La funzione paginate_links() fa questo di default. Il parametro che controlla questo comportamento è mid_size, che determina il numero di link alle pagine intorno alla pagina corrente da visualizzare. Il valore predefinito è 2.

Questo significa che, supponendo di avere 12 pagine e che la pagina corrente sia Pagina 1, la paginazione apparirà così:

1 2 3 ... 12

Ma se la pagina corrente è Pagina 6, la paginazione apparirà così:

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

Potrei sbagliarmi, ma penso che sia così che funzionano la maggior parte dei plugin di paginazione.

Modifica

Scusa, inizialmente ho letto male la tua domanda e non ho capito che vuoi visualizzare ogni decima pagina nei tuoi link di paginazione.

Questa funzione non ha un parametro integrato per fare ciò che desideri. La soluzione migliore potrebbe essere impostare 'show_all' su true, cambiare 'type' in 'array', e poi costruire l'output manualmente, ciclando attraverso i valori dell'array.

5 apr 2012 02:28:04
0

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

Quello che stai cercando è 'end_size', aggiungilo all'array degli argomenti con il valore che desideri.

27 feb 2012 13:32:55
1
$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'    => __('prec'),
                'next_text'    => __('succ'),
            ));
        }

    ?>  

    </div>

    <?php else :?>
    <h3><?php _e('Errore 404&#58; Non trovato', ''); ?></h3>
    <?php endif; ?>
    <?php wp_reset_postdata();?>  
17 apr 2017 12:12:17
Commenti

Basta copiare il codice includendo le prime due righe e otterrai la paginazione per il tipo di post personalizzato, tutto qui.

MZK MZK
17 apr 2017 12:19:57
0

Nel sito per sviluppatori WordPress sono menzionati alcuni parametri. Questa è la pagina relativa a questa funzione. Puoi controllare 'end_size' per maggiori informazioni.

E ho ancora una domanda. Utilizzo <?php echo paginate_links(); ?> nel template del mio tema e funziona perfettamente (come mostra l'immagine).descrizione immagine

Ma non sono sicuro se potrebbe causare altri problemi.

14 nov 2017 18:41:18