Infinite Scroll pathParse para comentarios inversos de WordPress

4 minutos de lectura

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.

avatar de usuario
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--;

  • Hola. He probado ese a:primer selector, pero no cambia nada. Sigo recibiendo el error en mi consola: [“Sorry, we couldn’t parse your Next (Previous Posts) URL. Verify your the css selector points to the correct A tag. If you still get this error: yell, scream, and kindly ask for help at infinite-scroll.com.”] plugins.js:41 [“determinePath”, “URL/comment-page-3#comments”] plugins.js:41 [“Binding”, “bind”]Tiene algo que ver con IS incrementando las páginas que está tratando de cargar, mientras que las URL de mi página disminuyen en número…

    – eso duele

    9 de julio de 2012 a las 15:50


  • IS no debería incrementarlos; busca la URL “siguiente” para encontrar qué cargar, por lo que no debería hacer nada más (si se incrementara, cargaría el siguiente + 1). Curiosamente, si sigue el enlace a la URL de comentarios, el desplazamiento infinito funciona bien. Miraré mejor.

    – M1ke

    9 de julio de 2012 a las 21:40

  • Comenta en el código // find the number to increment in the path. ¡Culpa mía! ¡Arreglemos eso entonces!

    – M1ke

    9 de julio de 2012 a las 21:46

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);

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad