tag - mostrar nombre de usuario logueado wordpress
¿Cómo obtener el nombre de la página actual en WordPress? (18)
Aquí está mi versión:
$title =ucwords(str_replace(''-'', '' '', get_query_var(''pagename'')));
get_query_var (''pagename'') me estaba dando la página slug. Por lo tanto, lo anterior reemplaza todos los guiones y hace que la primera letra de cada palabra en mayúscula, por lo que realmente se puede utilizar como un título.
¿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. Todos devolverán el nombre de la última entrada de blog.
Dicho de otra manera, suponga que tiene una página creada en WordPress con el nombre "Mis noticias". Esta página está configurada como la "página de publicación". Agregue un par de publicaciones a la página. Ahora, ¿qué API se puede usar para recuperar la cadena "mis-noticias" en lugar del nombre de la última publicación?
Editar:
Encontré la siguiente variable que parece funcionar.
$wp_query->queried_object->post_name
Esta es en realidad la versión amigable para URL del nombre de la página (slug), que es lo que estaba buscando también. Esto se probó con la plantilla predeterminada (twentyten). Realmente no estoy seguro de por qué las dos variables que figuran a continuación no funcionan en mi sitio. Gracias keatch por el consejo print_r()
.
Ahora, ¿por qué esta información está escondida tan en el fondo?
Creo que el tema de inicio de Roots tiene una función fantástica para obtener el título de la página actual, muy pirateable, cubre todas las bases y se puede utilizar fácilmente con el gancho wp_title
https://github.com/roots/roots/blob/6.5.0/lib/titles.php .
/**
* Page titles
*/
function roots_title() {
if (is_home()) {
if (get_option(''page_for_posts'', true)) {
echo get_the_title(get_option(''page_for_posts'', true));
} else {
_e(''Latest Posts'', ''roots'');
}
} elseif (is_archive()) {
$term = get_term_by(''slug'', get_query_var(''term''), get_query_var(''taxonomy''));
if ($term) {
echo $term->name;
} elseif (is_post_type_archive()) {
echo get_queried_object()->labels->name;
} elseif (is_day()) {
printf(__(''Daily Archives: %s'', ''roots''), get_the_date());
} elseif (is_month()) {
printf(__(''Monthly Archives: %s'', ''roots''), get_the_date(''F Y''));
} elseif (is_year()) {
printf(__(''Yearly Archives: %s'', ''roots''), get_the_date(''Y''));
} elseif (is_author()) {
$author = get_queried_object();
printf(__(''Author Archives: %s'', ''roots''), $author->display_name);
} else {
single_cat_title();
}
} elseif (is_search()) {
printf(__(''Search Results for %s'', ''roots''), get_search_query());
} elseif (is_404()) {
_e(''Not Found'', ''roots'');
} else {
the_title();
}
}
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.
1- Primero, necesitamos agregar un filtro. Debe existir un mejor filtro para usar que el template_include, pero no los conozco todos. Por favor, apúntame a la correcta.
add_filter( ''template_include'', ''var_template_include'', 1000 );
function var_template_include( $template ){
global $wp_query;
$GLOBALS[''current_page''] = $wp_query->get_queried_object()->post_name;
return $template;
}
2- Evita usar la variable directamente
function get_current_page( $echo = false ) {
if( !isset( $GLOBALS[''current_page''] ) )
return false;
return $GLOBALS[''current_page''];
}
3- Ahora puede usar la función get_current_page()
en cualquier otra parte de functions.php.
He encontrado ahora en Wordpress Codec
esta función:
obtener consulta http://codex.wordpress.org/Function_Reference/wp_list_pages
que es un contenedor para $wp_query->get_queried_object
. Esta publicación me puso en la dirección correcta, pero parece que necesita esta actualización.
He encontrado 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, echo el valor de wp_title.
<?php $title = wp_title('''',false); ?>
Recuerde eliminar la separación con la primera arg y luego configure la pantalla en falso para usarla como entrada a la variable. luego solo inserta el código entre las etiquetas de tu encabezado, etc.
<?php if ( $title == "" ) : echo "Home"; else : echo $title; endif; ?>
Trabajé como un regalo para mí y me aseguré de que el primero se declarara en la sección donde deseas extraer el título $, esto se puede ajustar para que devuelva diferentes variables.
La variable global WP $pagename
debe estar disponible para ti, acabo de probar con la misma configuración que has especificado.
$pagename
se define en el archivo wp-includes / theme.php, dentro de la función get_page_template()
, que por supuesto se llama antes de que se get_page_template()
sus archivos de tema de página, por lo que está disponible en cualquier punto dentro de sus plantillas para páginas.
EDITAR:
Aunque no parece estar documentado, la var de
$pagename
solo se establece si usa$pagename
permanentes. Supongo que esto se debe a que, si no los usas, WP no necesita la barra de páginas, por lo que no la configura.$pagename
no está configurado si usa la página como página frontal 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 establecer:$pagename = get_query_var(''pagename''); if ( !$pagename && $id > 0 ) { // If a static page is set as the front page, $pagename will not be set. Retrieve it from the queried object $post = $wp_query->get_queried_object(); $pagename = $post->post_name; }
Mi enfoque para obtener el nombre slug de la página
$slug = basename(get_permalink());
Mostrar título antes de que comience el ciclo:
$page_title = $wp_query->post->post_title;
Gracias
Ok, debes tomar el título de la página ANTES del ciclo.
$page_title = $wp_query->post->post_title;
Busque referencias: http://codex.wordpress.org/Function_Reference/WP_Query#Properties .
Haz un
print_r($wp_query)
antes del ciclo para ver todos los valores del objeto $ wp_query
Prueba esto:
$pagename = get_query_var(''pagename'');
Puede obtener la página actual, la publicación o el tipo de publicación personalizada con la variable global $ post.
echo $post->post_title
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 ciclo con wp_reset_postdata();
para establecer $ post en el 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 multimedia. Todo en WordPress es una ''publicación''.
Sé que esto es viejo, pero me encontré con esto y lo que parece ser el más fácil es usar esto.
<?php single_post_title(); ?>
Si está buscando acceder a la página actual desde su archivo functions.php (entonces, antes del bucle, antes $post
se $wp_query
$post
, antes de que $wp_query
se inicialice, etc.), realmente no tiene más remedio que acceder al variables del servidor en sí mismas y extraer la página solicitada de la cadena de consulta.
$page_slug = trim( $_SERVER["REQUEST_URI"] , ''/'' )
Tenga en cuenta que esta es una solución "tonta". No sabe, por ejemplo, que la página con el slug ''coming-soon'' es también p=6
. Y asume que su configuración de enlace permanente está configurada en nombre de página (¡que deberían ser de todos modos!).
Aún así, puede ser un pequeño truco útil si tiene un escenario controlado. Estoy usando esto en una situación en la que deseo redirigir a los visitantes no registrados a una página "próximamente"; pero tengo que asegurarme de que no los estoy arrojando al temido "bucle de redirección", así que debo excluir la página "próximamente" de esta regla:
global $pagenow;
if (
! is_admin() &&
''wp-login.php'' != $pagenow &&
''coming-soon'' != trim( $_SERVER["REQUEST_URI"] , ''/'' ) &&
! is_user_logged_in()
){
wp_safe_redirect( ''coming-soon'' );
}
Solo necesitamos usar la variable global "publicar".
global $post;
echo $post->post_title;
Esto hará eco del título de la página / publicación actual.
¡¡¡¡Espero que esto ayude!!!!
Una opción, si está buscando la página consultada real, en lugar de la identificación de la página o la barra es interceptar la consulta:
add_action(''parse_request'', ''show_query'', 10, 1);
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:
function show_query($wp){
if ( ! is_admin() ){ // heck we don''t need the admin pages
echo $wp->query_vars[''pagename''];
echo $wp->query_vars[''name''];
}
}
Si, por otro lado, realmente necesita los datos de la publicación, el primer lugar para obtenerla (y posiblemente en este contexto, el mejor) es:
add_action(''wp'', ''show_page_name'', 10, 1);
function show_page_name($wp){
if ( ! is_admin() ){
global $post;
echo $post->ID, " : ", $post->post_name;
}
}
Finalmente, me doy cuenta de que probablemente esta no sea la pregunta del OP, pero si está buscando el nombre de la página de administración , use el $pagenow
global.
$title = get_the_title($post); $parent_title = get_the_title($post->post_parent); echo $title; echo $parent_title;
Espero que esto ayude !! ;)
<?php wp_title(''''); ?>
Esto funcionó para mí, si entiendo correctamente, ¿quieres obtener el nombre de la página en una página que tenga entradas?