En la octava clase del curso de fundamentos de temas para WordPress vamos a ver cómo modificar los loops por defecto con pre_get_posts.
8 - Loop con pre_get_posts()
Ahora que ya sabemos cómo crear loops desde cero con get_posts, vamos a ver cómo modificar un loop ya existente en alguno de los archivos de plantilla de WordPress, ya que no hace falta crearlo todo desde cero, si ya hay parte del trabajo hecho.
Cuando estamos en una página de categorías, de autor o de cualquier otro "archive", hay un loop que podemos modificar con pre_get_posts, que nos permite alterar los resultados sin tener que llamar de nuevo a la base de datos. Eso lo hace mucho más eficiente que crearlo de nuevo. Vamos a ver cómo funciona.
¡Ya lo veis! Con este método ganamos en performance, y lo tenemos todo centralizado en functions.php, donde jugamos con condicionales para elegir a qué páginas van a afectar nuestras modificaciones.
Así pues, todos a modificar nuestro functions.php o bien a crear un plugin de funcionalidades donde vamos a definir condicionales y a alterar en cada página del frontend las queries, evitando causar estragos en el frontend.
Y atención que esto no es todo. En la próxima clase veremos una forma aún más potente, versátil y flexible de crear un bucle. ¡No os la perdáis!
Todos los capítulos de este curso:
- Curso de fundamentos de themes para WordPress #1. Jerarquía de archivos de plantilla
- Curso de fundamentos de themes para WordPress #2. Archivos de plantilla de listados
- Curso de fundamentos de themes para WordPress #3. Archivos de plantillas individuales
- Curso de fundamentos de themes para WordPress #4. Home y Front Page
- Curso de fundamentos de themes para WordPress #5. Plantillas de página
- Curso de fundamentos de themes para WordPress #6. Child themes
- Curso de fundamentos de themes para WordPress #7. get_posts
- Curso de fundamentos de themes para WordPress #8. pre_get_posts
- Curso de fundamentos de themes para WordPress #9. WP_Query
- Curso de fundamentos de themes para WordPress #10. get_pages (y malas ideas)