Estoy tratando de recuperar la babosa de la página actual de WordPress fuera del bucle. El título de la página regresa con wp_title ()
, pero ¿cómo puedo obtener la babosa?
<li>
<a href="/slug-of-current-page/">
<?php wp_title('', true); ?>
</a>
</li>
<?php global $post; $post_slug=$post->post_name; echo $post_slug; ?>
echo
. Entonces, esto sería ideal:<?php global $post; echo $post->post_name; ?>
$WP_Post
?Según otras respuestas, la babosa se almacena en la
post_name
propiedad. A pesar de que podría accederse directamente, prefiero el (infrautilizada)get_post_field()
función para acceder a las propiedades de correos que no tienen ninguna API adecuada para ellos.Requiere que la publicación se proporcione explícitamente y no es predeterminada para la actual, por lo que en su totalidad para la publicación actual sería:
fuente
get_post_field
sin un segundo argumento ( docs )EDITAR 5 DE ABRIL DE 2016
Después de cavar para obtener más confiabilidad, terminé haciendo esta respuesta a la siguiente publicación que conduce a esta edición: ( Asegúrese de verificarlo )
El método hasta la fecha más confiable que se me ocurrió es el siguiente:
De esta manera, está 99.9999% seguro de que obtendrá los datos correctos cada vez.
RESPUESTA ORIGINAL
Otra alternativa más segura a este problema es usar el
get_queried_object()
que contiene el objeto consultado actual para obtener la ficha de lapost_name
propiedad de la propiedad. Esto se puede usar en cualquier lugar de su plantilla.$post
puede usarse, pero puede no ser confiable ya que cualquier consulta personalizada o código personalizado puede cambiar el valor de$post
, por lo que debe evitarse fuera del ciclo.Usar
get_queried_object()
para obtener el objeto de la página actual es mucho más confiable y es menos probable que se modifique, a menos que esté usando el malquery_posts
que rompe el objeto de consulta principal, pero eso depende de usted.Puede usar lo anterior de la siguiente manera
fuente
query_posts
no es malo cuando se desea alterar la consulta principal , que sin embargo por lo general no lo hace y con frecuencia se emplea mal :)La forma simple de obtener la babosa es con:
fuente
http://domain/?p=123
, dejándolo con?p=123
.Dado el ejemplo de código, parece que lo que realmente necesita es un enlace. En ese caso, puede usar get_permalink () , que se puede usar fuera del bucle. Eso debería hacer lo que necesita de manera más confiable que usar el post slug.
fuente
Puede ser una pregunta antigua, pero creé las funciones get_the_slug () y the_slug () en función de sus respuestas.
fuente
Esta es la función que se debe usar cuando se desea recuperar la babosa fuera del bucle.
La respuesta se encuentra aquí: ¿Cómo recuperar la babosa de la página actual en WordPress?
fuente
Un poco más adelante en la respuesta de @Matthew Boynes, si está interesado en obtener la babosa principal (si la hay) también he encontrado útil esta función:
Por ejemplo, para agregar las babosas a la clase de cuerpo:
fuente
Si desea una respuesta más discreta, puede usar la siguiente consulta SQL para obtener todas las publicaciones que sean publicaciones, páginas o taxonomías personalizadas en cualquier momento, incluso si todavía no se han disparado ganchos.
SQL sin formato:
Esto funciona incluso en la primera línea de su archivo de funciones, incluso antes de los
mu_plugins_loaded
oinit
ganchos.@Nota
Esto supone que tiene un prefijo de base de datos estándar
wp_posts
. Si necesita tener en cuenta los prefijos variables, puede obtener la tabla de publicación correcta a través de PHP con bastante facilidad haciendo lo siguiente:A continuación, ejecute con cualquiera
$wpdb
,mysqli
o unaPDO
instancia. Dado que no hay entrada de usuario en esta consulta, es seguro ejecutarla sin una declaración preparada siempre que no le inyecte ninguna variable.Sugeriría almacenar esto como un valor estático privado de una clase, para que se pueda acceder sin tener que activar la consulta nuevamente más de una vez por página para obtener el mejor rendimiento, algo como esto:
Uso
Entiendes la esencia. Si necesita más detalles, puede obtenerlos de la forma habitual con
new \WP_Post( get_the_ID() );
Esto le permitirá revisar las publicaciones en cualquier momento, incluso si el ciclo de WordPress no ha llegado a un punto en el que su solicitud sea aceptable. Esta es una versión un poco más optimizada de la misma consulta ejecutada por el núcleo de Wordpress. Este filtra toda la basura que no desea que se devuelva, y solo le brinda una lista bien organizada con la identificación de autor relevante, el tipo de publicación, el slug y la visibilidad. Si necesita más detalles, puede buscarlos de la forma habitual con
new \WP_Post($id);
, o usar cualquiera de las otras funciones nativas de Wordpress con cualquiera de las filas de la tabla relevantes, incluso fuera del bucle.Utilizo una configuración similar en algunos de mis propios temas y complementos personalizados, y funciona bastante bien. También es seguro y no deja datos internos flotando en el ámbito global donde se puede anular como lo hace la mayoría de las cosas en Wordpress.
fuente
Sinceramente, no entiendo por qué ninguna de las respuestas simplemente lo hace:
Esto funciona para todas las publicaciones, páginas, rutas personalizadas.
fuente
Llamada de página dinámica en WordPress.
fuente