Contenido del artículo
- 1 Cómo implementar la paginación en los foros bbpress teniendo activas las respuestas anidadas
- 2 Requisitos
- 3 Paso 1 – Modificando la función bbp_list_replies()
- 4 Paso 2 – Nueva función customizada
- 5 Paso 3 – Copiando loop-replies.php a la ruta de tu plantilla.
- 6 Paso 4 – Editando loop-replies.php
- 7 Paso 5 – Replazamos la función bbp_list_replies()
- 8 Paso 6 – Llamando a la función de paginación
- 9 Paso 7 – Añadiendo algo de CSS
Cómo implementar la paginación en los foros bbpress teniendo activas las respuestas anidadas
Si has llegado a este post será porque pese a tener activada la paginación de bbpress compruebas que no funciona, y que en todos los post aparecen todos los comentarios de golpe. Esto es sin duda un problema, no sólo por comodidad UI/UX, si no porque perjudica el tiempo de carga, sobre todo en post con gran número de comentarios.
No busques plugins que mejoren esta funcinalidad, porque a día de hoy no existen (o no funcionan correctamente). Además, si has buscado por internet habrás encontrado soluciones a la paginación utilizando jQuery o un lenguaje similar. Esta solución te puede servir, pero sólo si no tienes un gran número de comentarios. Cuantos más comentarios existan en un post, peor funcionará tu página con este tipo de soluciones.
Después de mucho buscar, conseguí encontrar un blog en el que ofrecían una solución en PHP perfecta para paginar los comentarios de bbpress con respuestas anidadas de forma rapida y sencilla. Así que ¡manos a la obra!
Requisitos
Para aplicar esta solución tendrás que tener un mínimo de conocimientos de PHP y CSS, así como un mínimo de experiencia en los themes de wordpress y en la personalización de archivos. Si no tienes estos mínimos es posible que tengas problemas para seguir los pasos.
Paso 1 – Modificando la función bbp_list_replies()
Una de las funciones que deberíamos modificar es la función que utiliza bbpress para cargar y mostrar los comentarios llamada bbp_list_replies(), que se encuentra en /includes/replies/functions.php, y es llamada por el archivo loop-replies.php cuando activas las respuestas anidadas (Settings -> Forums).
En lugar de modificar la función en sí, hemos hecho una copia y la hemos adaptado para que haga lo que queremos. Por lo tanto, abre el archivo functions.php de tu plantilla y añade la siguiente función (puedes añadirla al final del archivo):
Con esta modificación conseguiremos pasar la información de la página actual y del número de respuestas por página para que la query devuelta los post (comentarios) correctos.
Paso 2 – Nueva función customizada
La siguiente función contiene:
- La parte del código responsable de mostrar el número de paginación.
- Variable $numreplies, que será el número total de respuestas a mostrar en el post y $paged, el número de página actual.
Paso 3 – Copiando loop-replies.php a la ruta de tu plantilla.
Si aún no lo has echo, deberás copiar el archivo loop-replies de la ruta real de bbpress a la ruta de tu plantilla. Es decir, desde la ruta /plugins/bbpress/templates/default/bbpress/ a la ruta de tu plantilla -> /NOMBREDETUPLANTILLA/bbpress
Este paso es necesario dado que no queremos modificar ningún archivo original del core de bbpress. Si lo hiciéramos, perderíamos los cambios la próxima vez que actualizaras el plugin, por ejemplo.
Paso 4 – Editando loop-replies.php
Abre el archivo loop-replies.php y pega el siguiente código justo después de los tags de apertura de php (<?php):
Con este código comprobamos/seteamos las variable de página en base al número de página en la que se encuentra el usuario.
Paso 5 – Replazamos la función bbp_list_replies()
Una vez que ya tenemos el archivo loop-replies.php copiado en nuestra ruta de plantilla, podemos editarlo y sustituir la función que necesitamos.
Buscaremos el siguiente código:
Y lo sustituiremos por el siguiente:
IMPORTANTE: Al modificar el número 15 por el que tu quieras recuerda que sólo los comentarios principales son contados. Es decir, si 1 comentario tiene 200 respuestas anidadas, se mostrarán todas las respuestas anidadas, dado que sólo contará como 1 comentario.
Paso 6 – Llamando a la función de paginación
Ahora sólo nos queda llamar a la función de paginación al final del listado de comentarios.
Para ello, pegaremos el siguiente código en el mismo archivo loop-replies.php, justo después de que se cierre el listado (buscar el código </ul>, por debajo de donde hemos pegado el código en el paso anterior.
IMPORTANTE: De nuevo, modifica en la última línea el númeor 15 por el número máximo de comentarios que quieres mostrar. Recuerda que el número que pongas aquí debe ser el mismo que el que has puesto en el paso nº 5.
Paso 7 – Añadiendo algo de CSS
En este momento nuestra paginación ya está funcionando. Sólo deberemos añadir algo de CSS para que sea algo «bonito».
Te recomiendo que diseñes tu propio CSS para que los números y flechas se muestren con los colores, tamaño y posición que tu quieras.
No obstante, te dejo el siguiente código como ejemplo, que deberás añadir como CSS personalizado (puedes hacerlo desde Apariencia -> Personalizar -> CSS)
¡FIN!
No dudéis en escribir comentarios en este mismo post para preguntar cualquier tema, solventar cualquier duda o pedirme cualquier otro tutorial de WordPress o de html, php, css, o lo que necesitéis.
Fuente original: https://wpup.co/bbpress-threaded-nested-replies-with-paging