¿Dónde usar la variable global $ post?

2

Estoy confundido al usar la variable global $post . ¿Se usa dentro del bucle o fuera del bucle? ¿Cuál es la ventaja de usarlo dentro y fuera del bucle?

    
pregunta Alamin 17.09.2014 - 18:19

2 respuestas

3

El $post global se establece en $wp_query->the_post() . Como $post se establece mediante la consulta principal y el hecho de que las plantillas se configuran dentro del alcance de la variable global, está disponible en toda la plantilla, por lo que no es necesario llamar explícitamente a $post global cuando se encuentre dentro de la plantilla especificada como los objetos WP_Post se puede acceder desde cualquier lugar. Puede acceder a los objetos WP_Post simplemente llamándolos directamente, por ejemplo, $post->ID para recuperar el ID de página en una plantilla de página

Cuando necesita acceder a datos de publicación fuera de una plantilla, por ejemplo, en una función o en un widget, debe llamar a $post global para que los datos de la publicación estén disponibles para su uso.

    
respondido por el Pieter Goosen 17.09.2014 - 19:31
1

Dentro del bucle tiene funciones como:

  • the_ID() o get_the_ID() que devuelven $post->ID
  • the_title() o get_the_title() que devuelven $post->post_title
  • the_content() o get_the_content() que devuelven $post->post_content

etc.

Pero aplican filtros y códigos cortos para la publicación que estás viendo. Para obtener más detalles sobre cómo funcionan estas funciones, visite la Referencia del código de WordPress

Dentro de un bucle, debes SIEMPRE utilizar las funciones que se crean para ti. Tienen una razón. Como dije antes: aplican filtros y analizan códigos cortos. También debe leer el artículo Global Variable en el códice de WordPress.

En mi opinión, solo deberías usar $post solo cuando no tengas otra opción. Por ejemplo: Desea, por algún motivo, el contenido sin filtrar de la publicación.

Dentro de The Loop las funciones descritas anteriormente y sus contrapartes devuelven información de la publicación actual en el lazo. Si se encuentra en una página de categoría / archivo usando $post fuera del bucle, le dará la información del último $post en el bucle (si se usa después) o si no se realizó ninguna consulta antes de que se inicializara el valor.

NOTA esta es una variable global que cambia dentro de The Loop y si lo estás usando / o un complemento lo usa como lo hice una vez ( if ($pageposts) : global $post; foreach ($pageposts as $post) : setup_postdata($post); ... endforeach; endif; ) lo cambiará de nuevo debido a su descripción y propósito previsto:

/**
 * Set up global post data.
 *
 * @since 1.5.0
 *
 * @param object $post Post data.
 * @uses do_action_ref_array() Calls 'the_post'
 * @return bool True when finished.
 */

Utilicé setup_postdata($post) para usar las funciones diseñadas por $posts dentro de un carrusel que estaba creando y seleccioné las publicaciones que pertenecían a custom post types basadas en post meta information , fecha actual y etc.

Mi consejo, si eres nuevo en WordPress, quédate con el functions implementado para tú . La abstractización tiene sus ventajas. Hace que las cosas sean más fáciles de encontrar, recordar y usar.

    
respondido por el aifrim 17.09.2014 - 19:00

Lea otras preguntas en las etiquetas