¿Colocar el título de la página en el encabezado?

15 feb 2015, 01:51:09
Vistas: 82.5K
Votos: 4

Normalmente, en WordPress, el título de la página aparece en el área de contenido. Me gustaría que el título apareciera en el área del encabezado. Parece que para hacer eso, tendría que quitarlo de su ubicación actual en content-page.php y colocarlo en header.php. Pero content-page.php es llamado desde page.php, que llama al content-page desde dentro de un bucle while (while ( have_posts() ) : the_post(); ...) -- así que tendría que mover o copiar esto también al encabezado, creo. Parece mucho trabajo.

¿Tendría más sentido mover parte del HTML del encabezado al contenido de la página, para no tener que ejecutar el bucle while más de una vez?

(Como herramienta de aprendizaje, estoy recreando un sitio HTML existente con WordPress, usando el tema inicial _s.)

--- EDICIÓN ---

Gracias por las respuestas. Muy útiles. Aquí están los resultados de algunas pruebas, basadas en sus respuestas. Dado el siguiente código, en el encabezado (fuera del Loop):

wp_title(): <?php wp_title('', true,''); ?><br>
the_title(): <?php the_title(); ?><br>
single_post_title(): <?php single_post_title(); ?><br>
$post->post_name: <?php echo 'nombre de página: ' . $post->post_name; ?><br>
ispage? : <?php echo (is_page() ? 'sí' : 'no'); ?><br>
ispage(about-us) : <?php echo (is_page('about-us') ? 'sí' : 'no'); ?><br>
ispage(About Us) : <?php echo (is_page('About Us') ? 'sí' : 'no'); ?>

Cuando se ve desde mi página About Us, obtengo:

wp_title() About UsAt The Tabernacle
the_title(): About Us
single_post_title(): About Us
$post->post_name: nombre de página: about-us
ispage? : sí
ispage(about-us) : sí
ispage(About Us) : sí

Cuando se ve desde mi página de Inicio, obtengo:

wp_title(): At The Tabernacle My site motto here
the_title(): Home
single_post_title(): Home
$post->post_name: nombre de página: home
ispage? : sí
ispage(about-us) : no
ispage(About Us) : no

Y cuando se ve desde una entrada "Hello World", obtengo:

wp_title(): Hello world!At The Tabernacle
the_title(): Hello world!
single_post_title(): Hello world!
$post->post_name: nombre de página: hello-world
ispage? : no
ispage(about-us) : no
ispage(About Us) : no

Conclusión: Puedo usar the_title() o single_post_title() (wp_title devuelve más texto del que quiero). Y puedo probar is_page(...) para mostrar un nombre de página específico cuando estoy viendo una entrada.

¡Gracias!

1
Comentarios

Si tu pregunta ha sido respondida, por favor marca la respuesta aceptada como tal. Gracias.

tacudtap tacudtap
16 feb 2015 03:44:01
Todas las respuestas a la pregunta 3
4

Si solo necesitas el título puedes solicitarlo fuera del bucle fácilmente.

Intenta llamar the_title() en tu cabecera. Debería funcionar

Pero debes tener en cuenta que si no pones una condición, cada página de tu sitio web mostrará su título en la sección de cabecera.

EDITADO: la función a llamar es get_the_title($post->ID) ya que the_title() no te permite especificar el ID del post como argumento. Puedes consultar en el WordPress Codex las funciones que te permiten consultar información de tu post fuera del bucle.

15 feb 2015 04:04:59
Comentarios

the_title está diseñado para usarse únicamente dentro del bucle. Para obtener el título de una publicación fuera del bucle, usa get_the_title( $post->ID )

Rachel Baker Rachel Baker
15 feb 2015 20:42:17

Sí, perdón, confundí las dos funciones.

mathieuhays mathieuhays
15 feb 2015 22:04:04

En realidad, verifiqué nuevamente y the_title() sí funciona fuera del bucle. En el caso de las plantillas de archivo, imprimirá el título del primer artículo. En single.php y page.php imprimirá el título de la página. Puede ser útil en algunos casos, pero no es recomendado por la documentación.

mathieuhays mathieuhays
15 feb 2015 23:05:26

¡Muy interesante! Como dije, soy nuevo en WP, así que nada me resulta obvio... (Incluyendo el hecho de que, aparentemente, no puedo presionar enter para un salto de línea dentro de un comentario --- supongo que publicaré una entrada separada abajo.

user781470 user781470
16 feb 2015 00:44:00
2

Necesitas usar wp_title();

Si estás intentando usar el título de la publicación así:

<head>
 <title> título de la publicación aquí </title>
</head>

Tendrías que agregar wp_title(' ', true , ' ');

<head>
 <title> <?php wp_title('', true,''); ?> </title>
</head>

Por ejemplo: Si el nombre de tu publicación fuera Hola Mundo, Hola Mundo ahora aparecería en la pestaña.

http://codex.wordpress.org/Function_Reference/wp_title

15 feb 2015 04:38:53
Comentarios

Las preguntas basadas solo en enlaces no son buenas. Por favor, explica qué hacer y por qué responde a la pregunta. Y, si es posible, publica un ejemplo.

cybmeta cybmeta
15 feb 2015 11:35:10

Gracias. Respondiste primero pero tuve que aceptar la otra respuesta ya que wp_title no funcionó para mí. Aún así, es bueno saber sobre wp_title.

user781470 user781470
16 feb 2015 20:11:28
0

Si bien los métodos mencionados anteriormente funcionan por el momento, los desarrolladores principales de WordPress recomiendan lo siguiente:

A partir de la versión 4.1 y Twenty Fifteen, la forma recomendada para que los temas muestren títulos es agregando soporte de tema así: -Konstantin Obenland

Puedes agregar esta línea en el archivo functions.php de tu tema después de after_setup_theme. o

de la misma página,

A partir de la versión 4.1 y Twenty Fifteen, la forma recomendada para que los temas muestren títulos es agregando soporte de tema así:

function theme_slug_setup() {
    add_theme_support( 'title-tag' );
}
add_action( 'after_setup_theme', 'theme_slug_setup' );

El soporte debe agregarse en la acción after_setup_theme o init, pero no más tarde que eso. No acepta argumentos adicionales.

Lo que esto hace es permitir que WordPress elija el título de la página en el encabezado, sin usar etiquetas <title> codificadas directamente en el archivo header.php.

Tu título se mostrará en el siguiente formato.

Título de página - Título del sitio

15 nov 2018 11:05:58