Estoy usando el complemento jQuery Infinite Scroll – https://github.com/paulirish/infinite-scroll/
para mostrar mis comentarios paginados de WordPress.
El complemento funciona bien al ver los comentarios de antiguo a nuevo (creo que esta es la opción predeterminada), pero si las opciones de discusión en WordPress están configuradas de la siguiente manera:
Break comments into pages with [XX] top level comments per page and the
[LAST] page displayed by default
Comments should be displayed with the [NEWER] comments at the top of each page
Entonces Infinite Scroll ya no funciona.
Al analizar el problema, parece ser que si la configuración es la anterior, la primera página de comentarios que mostrará WordPress es la última, es decir,
WordPress 1st comment page displayed = http://MYLINK/comment-page-5
WordPress 2nd comment page displayed = http://MYLINK/comment-page-4
WordPress 3rd comment page displayed = http://MYLINK/comment-page-3
etc.
Pero yo pensar Infinite Scroll quiere incrementar cada página, por lo que después de que se muestra la primera página (en realidad, la página 5), Infinite Scroll busca la página 6, que no existe.
Mirando a través de las opciones IS, hay un ruta de análisis opción, pero no hay documentación que explique cómo usarla. Ni siquiera estoy 100% seguro de si esto ayudará.
Yo (y muchos otros) estaría muy agradecido por cualquier ayuda que pueda brindar.
Pensé en el chip Id aquí con una solución más fácil. En lugar de intentar alterar el complemento, me resultó más fácil (después de días y días de intentarlo) invertir la matriz de comentarios. Simplemente agregue esto a su functions.php (procedente de aquí)
if (!function_exists('iweb_reverse_comments')) {
function iweb_reverse_comments($comments) {
return array_reverse($comments);
}
}
add_filter ('comments_array', 'iweb_reverse_comments');
De esta manera, el infinitescroll js puede permanecer como está. Además, simplemente deje la Configuración de WordPress> Discusiones por defecto.

M1ke
El complemento obtiene la siguiente URL para cargar desde el div.navigation a:first
selector. El atributo href de esto se pasa como la ruta a la solicitud ajax para la página siguiente. Pruebe ese selector de jQuery en la consola y vea qué ocurre; Luego, puede modificar el complemento para reescribir el selector o modificar su HTML para que el selector obtenga la coincidencia correcta.
Intento 2
El problema de análisis no se debe a la numeración; esta buscando page=3
y tu enlace es para page-3
. Suponga que no se puede cambiar, pero puede agregar el método pathParse como sugirió (agregue esto donde haya comentado un método similar en su código):
,pathParse:function(path,nextPage){
path = path.match(/page[-=]([0-9]*)/).slice(1);
return path;
}
Para luego hacer que disminuya correctamente en lugar de incrementar, la única forma que puedo ver en este momento es modificar la línea 493 (en la versión de desarrollo del complemento WP) para leer
opts.state.currPage--;
Parece que se me ocurrió una solución (no del todo elegante) a este problema.
Muchas gracias a @M1ke por su ayuda.
De acuerdo,
Entonces, en primer lugar, deberá utilizar la función pathParse, de modo que defina sus opciones de Desplazamiento infinito:
Añadir
.infinitescroll({
state: {
currPage: 4 // The number of the first comment page loaded, you can generate this number dynamically to save changing it manually
},
pathParse: function(path,nextPage){
path = ['comment-page-','#comments'];
return path;
}
});
Luego deberá modificar el archivo del complemento principal (jquery.infinitescroll.js o versión .min) ya que no parece haber otra forma de hacerlo. Por lo tanto, busque la sección con:
// increment the URL bit. e.g. /page/3/
opts.state.currPage++;
y cambiar a
// decrement the URL bit. e.g. /page/3/
if (opts.state.currPage > 1) {
opts.state.currPage--;
}
else if (opts.state.currPage == 1) {
console.log("Last Page"); // Just needed for debugging
opts.state.currPage = 999999; // stop IS from loading Comment Page 0 by giving it a page number that won't exist and will return a '404' to provide 'end' function.
}
Además, asegúrese de la siguiente sección:
this._debug('pathParse manual');
return opts.pathParse(path, this.options.state.currPage+1);
Se cambia a:
this._debug('pathParse manual');
return opts.pathParse(path, this.options.state.currPage);