Los problemas de usar los bucles vestidos de WordPress

Son las 8:00 de la mañana. Me puse a trabajar después de un paseo en bicicleta y un metro. El olor a café que emana de mi bola de dragón de taza se despierta mis sentidos y me siento bien. Es hora de abrir mi navegador y editor de código (que, por supuesto, es VIM, no puedo usar Atom) y hacer algo para trabajar. Si bien tomo el primer topo de café, leo el único boleto de asistencia que tengo en el cuadro de correo electrónico: parece que hay un cliente que tiene problemas con el contenido de Nelio, nuestro complemento no distribuye correctamente los mensajes sociales. ¡Extraño! Afaik, este problema solo le sucede a él, así que estoy seguro de que tiene que ser un problema con su instalación … Apuesto a que es un tercero. Es siempre.
No es la mejor manera de comenzar mi día, pero al menos sé que será un día divertido. Entonces, ahora es el momento de investigar lo que está pasando … ¿Quién dijo que el desarrollo de WordPress fue fácil? En unas pocas horas, Toni y yo pudimos averiguar qué estaba mal: WordPress Loop. O, bueno, si soy preciso, debería decir bucles de WordPress vestidos. ¿Quieres saber qué pasó y cómo arreglamos? ¡Continúe leyendo y descubriendo más sobre WordPress Loop! Recordatorio rápido: ¿qué es WordPress Loop? Hace unos años, Antonio Villegas escribió una serie de publicaciones que explican cuál es el bucle de WordPress, cómo puedes cambiarlo y algunos trucos avanzados. Desafortunadamente, solo están disponibles en español … pero si estás interesado en ellos, háganos saber y tradúrelos al inglés. De todos modos, me gustaron esas publicaciones porque fueron una muy buena introducción al tema:
WordPress Loop determina qué contenido (publicaciones, páginas o contenido personalizado) se mostrará al navegar en una página en su sitio web. (…) En esencia, así es como funciona WordPress: el bucle interroga la base de datos de WordPress para obtener las publicaciones que su usuario está interesado en tener en cuenta un conjunto de parámetros. En otras palabras, el bucle no es más que el modo de WordPress para hacerse cargo de un conjunto de publicaciones y “manejarlos” (generalmente para mostrarlos en la pantalla). Veamos un ejemplo de bucle muy simple: ¿puede identificar todas las partes diferentes? Es muy simple, mira: en las filas 3-6 establecemos los parámetros de nuestra búsqueda (en este caso, queremos 5 publicaciones), en las filas 9 y 10 viajamos todas las publicaciones que hemos encontrado (prácticamente imprimimos sus títulos en una lista), y al final, en la línea 15, cancelamos este bucle y restablecemos la consulta a cualquier WordPress que estuviera haciendo.
Bueno, ahora que entiendes cómo funciona el bucle, veamos qué nos pasó en Nelio. Al ejecutar varios bucles simultáneamente en nuestro complemento, definimos una función simple que, dado el identificador de una publicación, devolvió una matriz con datos. Algo como eso:
Como puede ver, nada nuevo bajo el sol. En esta posición, simplemente construimos el bucle en las líneas 5-7, nos aseguramos de que la publicación que interrogamos existe en las filas 9-12 y hacemos el trabajo habitual: cargamos la publicación (línea 14), creamos la matriz We We We hará. Gira y termina. Bastante simple, ¿no?
Supongamos, por ejemplo, llamamos a esta función con la ID 1 y que el resultado que estamos esperando es el siguiente:

Bueno, bastante sorprendente, esto es lo que hemos obtenido cuando lo ejecutamos en la instalación de nuestro cliente: como puede ver, el título ya no es mi primera publicación, sino algo completamente diferente. Por una razón inexplicable, nuestra función ha devuelto un título aleatorio, que, en caso de que se pregunte, corresponde a una publicación diferente en nuestro blog. ¿Qué diablos está pasando aquí? ¿Por qué nuestra función aparentemente simple falla tan lamentable? La explicación es simple e infeliz …
¡Maldita sea, bucles ricos! Nuestro cliente tenía un complemento que adjuntaba una lista de publicaciones relacionadas con el contenido de una publicación. Esencialmente, este otro complemento hace lo siguiente:
Es decir, este otro complemento prácticamente lanza un nuevo bucle para buscar publicaciones relacionadas (en el ejemplo, simplemente cargamos las 25 publicaciones), tomamos esas publicaciones, las agregamos al contenido y restablecen la “consulta original” usando wp_reset_postdata (). Hasta aquí todo bien. Ahora tenga cuidado: ¿cuándo se ejecuta este fragmento? Es una función relacionada con el_content, por lo que siempre que el filtro se ejecute, este fragmento lo será. En otras palabras, si este complemento de terceros está activo, se ejecutará (al menos) cuando nuestro complemento realice las líneas 18. ? Por lo tanto, es muy posible que, cuando la ejecución llegue a la línea 19 en nuestro complemento, la consulta ha cambiado … ¿Cuál es el título de ayuno 25?
Que…! ¡Asi que aqui esta! El título que carga corresponde a 25, lo que significa que, de hecho, el bucle vestido sobrescribido mi propio bucle y perdí la referencia a mi propia publicación. ?? Cómo trabajar con más bucles vestidos y evitar bien los problemas de ellos, al menos finalmente sabemos lo que está sucediendo. Los bucles vestidos son bastante comunes, por lo que ahora sabemos lo que está mal, la solución debe ser simple y directa. ¿O es eso? No pude encontrar la respuesta en Codex, así que pregunté en los foros de WordPress … … y después de unos minutos recibí una respuesta de Pascal Birchler (¡qué fuerte!). Desafortunadamente, la respuesta no fue demasiado reconfortante. Básicamente, hay dos problemas con los fragmentos que hemos distribuido:
WP_RESET_POSTDATA no restablece la consulta activa anterior, sino el bucle principal. En otras palabras, el complemento de tercera parte no puede restaurar nuestra consulta …?
La forma recomendada de resolver este problema es … ¡no ingresarlo primero! Quiero decir, no use llamadas que puedan activar filtros. ?
Aunque estoy muy agradecido por el apoyo gratuito y desinteresado que recibí, la verdad es que no estaba satisfecho con la solución. Quería usar mi implementación y estar “protegido por filtros”, por lo que opté por un remedio diferente y radical: cada vez que ejecuto una etiqueta de plantilla, restablezco manualmente mi bucle ($ query-> reset_postdata ()) para asegurarme de asegurarme Siempre trabajo con la publicación correcta:

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

Your email address will not be published. Required fields are marked *