Usando paginate_links() para generar paginación "1, 2, 3 ... 10, 20, 30, 40... 55"
Encontré este código:
// Obtener número total de páginas
global $wp_query;
$total = $wp_query->max_num_pages;
// Solo paginar si tenemos más de una página
if ( $total > 1 ) {
// Obtener la página actual
if ( !$current_page = get_query_var('paged') )
$current_page = 1;
// La estructura del "format" depende de si estamos usando enlaces permanentes amigables
$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'
));
}
Funciona bien pero genera una paginación como "1, 2, 3 ... ÚLTIMAPÁGINA", he visto plugins que generan paginaciones así "1, 2, 3... 19, 20, 30 ... ÚLTIMAPÁGINA".
¿Se puede lograr esto usando la función paginate_links()?
No quiero agregar un plugin solo para este pequeño ajuste.

La función paginate_links()
hace esto por defecto. El parámetro que lo controla es mid_size
, que determina el número de enlaces de página alrededor de la página actual que se mostrarán. El valor por defecto es 2
.
Esto significa que, suponiendo que tienes 12 páginas y la página actual es Página 1, la paginación se verá así:
1 2 3 ... 12
Pero si la página actual es Página 6, la paginación se verá así:
1 ... 4 5 6 7 8 ... 12
Podría estar equivocado, pero creo que así es como funcionan la mayoría de los plugins de paginación.
Edición
Disculpa, al principio malinterpreté tu pregunta y no entendí que quieres mostrar cada décima página en tus enlaces de paginación.
Esta función no tiene un parámetro incorporado para hacer lo que deseas. Tu mejor opción podría ser establecer 'show_all'
como true
, cambiar 'type'
a 'array'
, y luego construir la salida manualmente, iterando a través de los valores del array.

http://codex.wordpress.org/Function_Reference/paginate_links
Lo que estás buscando es 'end_size', agrega esto al array de argumentos con el valor que desees.

$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' => __('anterior'),
'next_text' => __('siguiente'),
));
}
?>
</div>
<?php else :?>
<h3><?php _e('Error 404: No encontrado', ''); ?></h3>
<?php endif; ?>
<?php wp_reset_postdata();?>

En el sitio web para desarrolladores de WordPress se mencionan algunos parámetros. Esta es la página sobre esta función. Puedes consultar 'end_size' para más información.
Y todavía tengo una pregunta. Utilizo <?php echo paginate_links(); ?>
en la plantilla de mi tema y funciona perfectamente (como muestra la imagen).
Pero no estoy seguro de si podría causar otros problemas.
