Sur le site que nous développons, le défilement infini est activé par Ajax/JavaScript.
$('#inifiniteLoader').show('fast');
$.ajax({
url: "<?php bloginfo('wpurl') ?>/wp-admin/admin-ajax.php",
type:'POST',
data: "action=infinite_scroll&cat='<?php echo $cat_id ?>'&exclude='<?php
echo get_the_ID() ?>'&page_no="+ pageNumber + '&loop_file=loop',
success: function(html){
$('#inifiniteLoader').hide('1000');
$("#primary").append(html); // This will be the div where our content will be loaded
}
});
Sur le site dans son ensemble, cela fonctionne, mais sur la page unique, où sont affichés les articles, puis tous les autres articles de cette catégorie (à l'exception de l'article) sous forme de vignettes, il y a un problème.
Le WP_Query
exclut le poste en question:
$args = array ( 'cat' => $catId, 'post__not_in' => $postid );
$custom_query = new WP_Query( $args );
Cela fonctionne aussi, mais la pagination ne fonctionne pas.
Exemple: Liste des professeurs
La grille est supposée montrer 8 pouces par page. Le 3 sur la page de formulaire inférieure 2. Lorsque vous cliquez sur une vignette et entrez le message, les vignettes (à l'exception du curseur actuel) sont répétées. Comme vous pouvez le constater, quelque chose ne va pas dans la pagination, car le courant est exclu. La première page en montre une à partir de la page 2. Il s’agit alors du premier message de la page 2, qui entraîne un double message.
Si je change le loop.php
pour ignorer le premier message, seuls sept sont affichés et la grille n'est pas remplie.
La requête dans les fonctions ressemble à ceci, et exclut également le post actuel:
function wp_infinitepaginate() {
$loopFile = $_POST['loop_file'];
$paged = $_POST['page_no'];
$cats = $_POST['cat'];
$exclude = $_POST['exclude'];
$posts_per_page = get_option( 'posts_per_page' );
$showposts = $posts_per_page;
$offset = ( ( $showposts * $paged ) - $showposts );
$args = array(
'cat' => $cats,
'posts_per_page' => $showposts,
'offset' => $offset,
'post__not_in' => array( $exclude ),
);
# Load the posts
//query_posts( array( 'paged' => $paged ) );
query_posts( $args );
get_template_part( $loopFile );
wp_reset_query();
exit;
}
Des conseils?
Vous avez des guillemets simples dans votre chaîne de paramètres - utilisez plutôt un objet pour plus de clarté:
$.ajax({
data: {
action: "infinite_scroll",
cat: "<?php echo $cat_id ?>",
exclude: "<?php the_ID() ?>",
page_no: pageNumber,
loop_file: "loop"
}
});