Post__not_in
Contents
En primer lugar tenemos wp_reset_postdata, que restaura la variable global $post al post actual en la consulta principal. Esto es útil cuando se utiliza WP_Query para personalizar los bucles o crear múltiples bucles en la misma página. Su aspecto es el siguiente:
Esta etiqueta es agradable y simple – no acepta parámetros y no devuelve valores. Simplemente restablece los datos de la entrada después de una consulta personalizada. Así que, por ejemplo, digamos que tenemos un bucle WP_Query personalizado en el archivo header.php de nuestro tema, algo así:
Esto mostraría un post al azar en la cabecera, pero también cambiará el objeto de consulta principal para cualquier otro bucle en la página. Sin los datos de consulta originales disponibles, el bucle de posts principales contenido en, digamos, index.php puede producir resultados inesperados. Afortunadamente, podemos utilizar wp_reset_postdata para restaurar el objeto de consulta a su estado original.
Así que tanto wp_reset_query() como wp_reset_postdata() restablecen el objeto de consulta restaurando la variable global $post, pero wp_reset_query va un paso más allá y realmente destruye la consulta anterior antes de hacerlo. Esto es importante cuando se utiliza query_posts(), como se ve en el siguiente ejemplo:
Restablecer datos del puesto php
Me he encontrado con un error varias veces en el último tiempo que me tenía perplejo. Al crear meta boxes en la parte de administración de WordPress que contenían bucles personalizados, no podía restablecer $post usando wp_reset_postdata() – simplemente no funcionaba.
Originalmente, pensé que tal vez lo estaba haciendo mal porque estaba usando get_posts, así que probé con WP_Query con los mismos resultados. Así que, pensando que tenía un error legítimo, fui a reportarlo y encontré que ya había un ticket y un parche para ello ( hay que amar a la comunidad de WordPress ). El parche es una solución bonita y elegante que funcionó bien cuando lo probé, pero hasta que no se acepte en el núcleo no es realmente una opción para usar porque hackear el núcleo es malo. Así que he hecho el mío propio mientras tanto.
Mi enfoque fue crear dos nuevas funciones que son similares a las que usamos ahora para configurar y restablecer los datos de los puestos. Preferiría no introducir nuevos elementos en la API, pero en esta situación (no hay ganchos disponibles y no se puede editar el núcleo) era mi única opción.
Sólo podemos hacer esto la primera vez ya que cualquier llamada posterior a $post nos dará el objeto configurado con setup_postdata() y los datos serán incorrectos. La siguiente parte es la misma que si usáramos setup_postdata() normalmente en el bucle. Establecemos $post al objeto que queremos configurar y luego lo pasamos a setup_postdata().
Wp_reset_query()
Digamos que has estado construyendo un nuevo sitio pero no estás contento con las personalizaciones. Tal vez la marca está fuera de lugar o el tiempo de carga es ridículamente lento y prefieres empezar de nuevo que deshacer todas las personalizaciones que has hecho. O tal vez sólo has estado construyendo un sitio para practicar mientras aprendes más sobre WordPress. En cualquier caso, puedes reiniciar WordPress para empezar desde cero de forma rápida y sencilla.
Digamos que estás revisando el sitio web de un cliente o el tuyo propio para un rediseño completo del sitio web. Ya has creado y probado un nuevo sitio web utilizando un sitio de ensayo y ahora estás listo para ponerlo en marcha. En ese caso, tal vez sea mejor reiniciar WordPress.
O tal vez has sido hackeado y ahora hay código basura o spam en los archivos de los plugins, los archivos de los temas o las entradas y páginas. En lugar de peinar la parte trasera y delantera de tu sitio, puede que prefieras un restablecimiento.
Digamos que sólo quieres reemplazar tu tema. En ese caso, usted todavía quiere mantener su contenido, plugins, y la configuración – no completamente empezar de nuevo desde cero. En esta situación, y en la mayoría de los rediseños, querrás optimizar el contenido existente, configurar algunas redirecciones y actualizar el mapa del sitio XML en lugar de reiniciar WordPress.
Wp_reset_postdata vs wp_reset_query
WordPress WordPress Reset The Post Data Si usted está desarrollando un tema de WordPress entonces usted entendería todo sobre el bucle de WordPress. Este es el código que se utiliza para mostrar los mensajes en la pantalla correcta que se encuentra actualmente. El bucle funciona consultando a la base de datos para obtener todos los mensajes que necesita para la página y hará un bucle a través de todos ellos para que podamos mostrarlos. Dentro del bucle tendrás acceso al objeto post donde podrás utilizar funciones como the_title(), the_permalink(), the_content() para mostrar toda la información en la pantalla del sitio web. Esto, en su forma más simple, funciona muy bien, pero si quieres buscar información adicional en la entrada utilizando otro objeto WP_Query entonces esto anulará el bucle existente y lo reemplazará con los nuevos datos. Esto define el problema común en WordPress del bucle dentro de un bucle. A continuación se muestra un ejemplo del problema, comienza con el bucle estándar single.php, pero después del contenido vamos a obtener todos los posts de este autor. Esto significa que tenemos que hacer otra consulta a la base de datos para devolver todos los posts de este autor.