WordPress : La pagination ne fonctionne pas sur les types de publication personnalisés
J’ai créé un « portfolio » de type de publication personnalisé sur mon site Web. Je suis capable de créer des catégories, des messages … etc. J’ai créé une page de catégorie qui affiche tous les messages en fonction de la catégorie et je l’ai fait en utilisant le morceau de code suivant dans archive.php
<?php $cat = get_query_var('cat');?>
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ?>
<?php query_posts('showposts=3&post_type=portfolio&category_name=web-design&order=ASC&paged='.$paged); ?>
<div id="page" class="category_post grid_12">
<?php while (have_posts() ) : the_post(); ?>
<div class="grid_3 single-post">
<div class="list-post">
<a class="read-more" href="<?php echo get_permalink()?>"><?php echo the_post_thumbnail(array(213,185));?></a>
</div>
<p>
<?php $content=trim(get_field("description"));
echo $half_content=substr($content,0,88)."..." ?>
<a class="category-link" href="<?php echo get_permalink()?>">Read more</a>
</p>
</div>
<?php endwhile; ?>
<?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>
J’utilise également le plugin wp_pagenavi pour la pagination. Maintenant, mon problème est que lorsque je clique sur la page 2, c’est-à-dire la page suivante, les messages les plus récents ne s’affichent pas. Veuillez me dire ce qui ne va pas avec le code ci-dessus.
Solution n°1 trouvée
Votre type de publication personnalisé a-t-il la propriété has_archive définie sur true ? Utilisez-vous un modèle d’archive ou tring pour interroger les publications dans un code de modèle ?
Solution n°2 trouvée
Add custom_pagination function in your function.php file
`function custom_pagination($numpages = '', $pagerange = '', $paged='') {
if (empty($pagerange)) {
$pagerange = 2;
}
global $paged;
if (empty($paged)) {
$paged = 1;
}
if ($numpages == '') {
global $wp_query;
$numpages = $wp_query->max_num_pages;
if(!$numpages) {
$numpages = 1;
}
}
$pagination_args = array(
'base' => get_pagenum_link(1) . '%_%',
'total' => $numpages,
'current' => $paged,
'show_all' => False,
'end_size' => 1,
'mid_size' => $pagerange,
'prev_next' => False,
'prev_text' => __('«' , 'swift'),
'next_text' => __('»' , 'swift'),
'type' => 'array',
'add_args' => false,
'add_fragment' => ''
);
$paginate_links = paginate_links($pagination_args);
echo '<div class="Pagination-Num"><ul>';
foreach ( $paginate_links as $paginate_link ) {
echo "<li> $paginate_link </li>";
}
echo '</ul></div>';
}
`
And In your Custom page template add the following code...
<?php
/**
* Template Name: Custom Page
* The custom page template file
*/
?>
<?php get_header(); ?>
<h2>Posts</h2>
<?php
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$custom_args = array(
'post_type' => 'post',
'posts_per_page' => 2,
'paged' => $paged
);
$custom_query = new WP_Query( $custom_args ); ?>
<?php if ( $custom_query->have_posts() ) : ?>
<!-- the loop -->
<?php while ( $custom_query->have_posts() ) : $custom_query->the_post(); ?>
<article class="loop">
<h3><?php the_title(); ?></h3>
<div class="content">
<?php the_excerpt(); ?>
</div>
</article>
<?php endwhile; ?>
<!-- end of the loop -->
<!-- pagination here -->
<?php
if (function_exists(custom_pagination)) {
custom_pagination($custom_query->max_num_pages,"",$paged);
}
?>
<?php wp_reset_postdata(); ?>
<?php else: ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>
<?php get_footer(); ?>
Je suis sûr que ce sera du travail.
0 commentaire