Utilizzo di paginate_links() per generare paginazioni del tipo "1, 2, 3 ... 10, 20, 30, 40... 55"
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.

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.

http://codex.wordpress.org/Function_Reference/paginate_links
Quello che stai cercando è 'end_size', aggiungilo all'array degli argomenti con il valore che desideri.

$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: Non trovato', ''); ?></h3>
<?php endif; ?>
<?php wp_reset_postdata();?>

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).
Ma non sono sicuro se potrebbe causare altri problemi.
