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.
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.
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.
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.
$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: Not Found', ''); ?></h3>
<?php endif; ?>
<?php wp_reset_postdata();?>
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) .
Mais je ne suis pas sûr que cela causerait d'autres problèmes.