¿Qué código PHP se puede usar para recuperar el nombre de la página actual en un tema de WordPress?
Todas las soluciones que he visto hasta ahora ( the_title()
, get_page()->post_name
,get_post()
, etc.) no funcionan para una página que contiene entradas de correos. Todos devolverán el nombre de la última entrada del blog.
Dicho de otra manera, suponga que tiene una página creada en WordPress con el nombre "My News". Esta página está configurada como la "página de publicación". Agrega un par de publicaciones a la página. Ahora, ¿qué API se puede usar para recuperar la cadena "my-news" en lugar del nombre de la última publicación?
He encontrado la siguiente variable que parece funcionar.
$wp_query->queried_object->post_name
Esta es en realidad la versión URL amigable del nombre de la página (slug), que es lo que estaba buscando también. Esto se probó con la plantilla predeterminada ( Twenty Ten ). Realmente no estoy seguro de por qué las dos variables que figuran a continuación no funcionan en mi sitio. Gracias a keatch para la print_r()
punta .
Ahora, ¿por qué esta información está oculta tan profundamente?
fuente
Respuestas:
La variable global de WordPress
$pagename
debería estar disponible para usted. Acabo de probar con la misma configuración que especificó.$pagename
se define en el archivo wp-includes / theme.php, dentro de la funciónget_page_template()
, que por supuesto se llama antes de analizar los archivos de tema de su página, por lo que está disponible en cualquier punto dentro de sus plantillas para páginas.Aunque no parece estar documentado, la
$pagename
var solo se establece si usa enlaces permanentes. Supongo que esto se debe a que si no los usa, WordPress no necesita el slug de la página, por lo que no lo configura.$pagename
no se establece si usa la página como portada estática.Este es el código dentro de /wp-includes/theme.php, que usa la solución que señaló cuando
$pagename
no se puede configurar:$ pagename = get_query_var ('pagename'); if (! $ pagename && $ id> 0) {// Si una página estática se establece como la página principal, $ pagename no se establecerá. Recuperarlo del objeto consultado $ post = $ wp_query-> get_queried_object (); $ pagename = $ post-> post_name; }
fuente
$pagename = $wp_query->queried_object->post_name;
, simplemente no se olvide de establecerglobal $wp_query;
antes!Mi enfoque para obtener el nombre de la página:
fuente
Ok, debes tomar el título de la página antes del bucle.
Verifique la referencia: http://codex.wordpress.org/Function_Reference/WP_Query#Properties .
Hacer un
antes del bucle para ver todos los valores del
$wp_query
objeto.fuente
Esto funcionó para mí.
Si entiendo correctamente, desea obtener el nombre de la página en una página que tiene entradas de publicación.
fuente
Puede obtener la página actual, publicación o tipo de publicación personalizada con la variable global
$post
:Nota: En una función o clase, deberá especificar
global $post;
antes de intentar usar$post
.Si tiene bucles en su página, asegúrese de finalizar cada bucle
wp_reset_postdata();
para$post
volver al elemento predeterminado que se muestra (la página).Tenga en cuenta que la variable 'post_title' también está disponible para cualquier bucle / consulta personalizada ... incluidos elementos de menú y archivos adjuntos de medios ... todo en WordPress es una 'publicación'.
fuente
Si está buscando acceder a la página actual desde su archivo functions.php (por lo tanto, antes del ciclo, antes de que
$post
se complete, antes de que$wp_query
se inicialice, etc.), realmente no tiene más remedio que acceder a las variables del servidor y extraer la página solicitada de la cadena de consulta.Tenga en cuenta que esta es una solución "tonta". No sabe, por ejemplo, que la página con la babosa 'próximamente' también lo es
p=6
. Y supone que su configuración de enlace permanente está establecida enpagename
(¡lo que debería ser de todos modos!).Aún así, puede ser un pequeño truco útil si tienes un escenario controlado. Estoy usando esto en una situación en la que deseo redirigir a los visitantes que no han iniciado sesión a una página "próximamente"; pero tengo que asegurarme de que no los estoy arrojando al temido "bucle de redireccionamiento", así que necesito excluir la página "próximamente" de esta regla:
fuente
Creo que el tema de inicio Roots tiene una función fantástica para obtener el título de la página actual. Es muy pirateable, cubre todas las bases y se puede usar fácilmente con el
wp_title
gancho.fuente
Prueba esto:
fuente
Se me ocurrió una solución más simple.
Obtenga el valor devuelto del nombre de la página de wp_title (). Si está vacío, imprima el nombre de la página de inicio; de lo contrario, repita el valor de wp_title ().
Recuerde eliminar la separación con el primer argumento y luego establecer la visualización en falso para usarlo como entrada a la variable. Luego simplemente coloque el código entre su encabezado, etc.etiquetas.
Funcionó de maravilla para mí y asegurándose de que el primero se declare en la sección donde desea extraer el
$title
, esto se puede ajustar para devolver diferentes variables.fuente
Solo necesitamos usar la variable global "post":
Esto hará eco del título de la página / publicación actual.
fuente
Utilizar:
fuente
Este parece ser el más fácil de usar:
fuente
Muestra el título antes de que comience el ciclo:
fuente
Una opción, si está buscando la página consultada real, en lugar de la ID de la página o la ficha, es interceptar la consulta:
Dentro de su función, tiene acceso al objeto $ wp y puede obtener el nombre de la página o el nombre de la publicación con:
Si, por otro lado, realmente necesita los datos de la publicación, el primer lugar para obtenerlos (y posiblemente en este contexto, el mejor) es:
Finalmente, me doy cuenta de que probablemente esta no era la pregunta del OP, pero si está buscando el nombre de la página de administración , use el global
$pagenow
.fuente
Dentro del bucle de WordPress :
Esto le mostrará el título de la página actual.
Para referencia: get_the_title ()
fuente
Aquí está mi versión:
get_query_var ('pagename') solo me estaba dando la babosa de la página. Entonces, lo anterior reemplaza todos los guiones y hace que la primera letra de cada palabra sea mayúscula, por lo que en realidad se puede usar como título.
fuente
Esto es lo que terminé usando, a partir de 2018:
fuente
Ahora he encontrado esta función en WordPress Codec ,
ser consultado
que es un envoltorio para
$wp_query->get_queried_object
.Esta publicación me puso en la dirección correcta, pero parece que necesita esta actualización.
fuente
Esto también funciona si estás en functions.php. No es el mejor enfoque ya que tiene que usar la matriz global, pero funciona.
Primero, necesitamos agregar un filtro. Debe existir un mejor filtro para usar que template_include, pero no los conozco todos. Por favor, apúntame a la correcta.
Evite usar la variable directamente
Ahora puede usar la función
get_current_page()
en cualquier otra parte de functions.php.fuente