Mostrar el título de la página en index.php

29 dic 2014, 14:45:22
Vistas: 30.9K
Votos: 4

Tengo mi página de entradas configurada como index.php, y allí tengo mi encabezado principal (como en todas las páginas).

Estoy teniendo problemas para mostrar el encabezado de la página. La página se llama 'Blog' en WordPress y ha sido especificada como la página de entradas.

Si muestro el encabezado de la página con wp_title('');, obtengo el título de la página — 'Blog' — pero con el nombre del sitio después (posiblemente debido al plugin Yoast SEO).

Si uso the_title(), me muestra el título de la entrada más reciente del blog, incluso cuando llamo a la función fuera del loop.

Así que he tenido que recurrir a codificar manualmente <h1>Blog</h1>, lo cual está lejos de ser ideal.

¿Hay alguna manera de obtener el nombre del título de la página dinámicamente pero solo el título de la página por sí mismo?

2
Comentarios

En primer lugar, wp_title() se utiliza para mostrar y enlazar con el elemento title de un documento. En segundo lugar, no deberías estar llamando a the_title() fuera del bucle en primer lugar. En tercer lugar, por favor proporciona el código fuente de index.php. the_title() funciona correctamente cuando se usa como se indica ;-)

tacudtap tacudtap
16 feb 2015 03:10:50

Puedo confirmar que me encuentro con el mismo comportamiento específico. Es decir, la publicación de blog más reciente se utiliza como título de la página en lugar del título de la página.

Clarus Dignus Clarus Dignus
16 sept 2019 00:30:27
Todas las respuestas a la pregunta 6
4

Extraño. Fuera del bucle, the_title() debería darte el nombre de la página actual, si realmente estás en una página y no viendo una entrada específica. Si te da el título de la entrada en su lugar, puede significar que de alguna manera estás dentro de un bucle. Pero si eso fuera cierto, wp_title no debería mostrar "Blog".

Prueba si otras opciones dan el mismo resultado:

//the_title();
single_post_title();
echo $post->post_name; // Creo que esto muestra el nombre de la página en la URL

También verifica con is_page(). Podrías probar el test is_page('Blog').

if (is_page('blog')) {
echo 'Blog';
}
else {
the_title();
}

solo para ver qué sucede.

16 feb 2015 02:20:14
Comentarios

disculpa por la respuesta extremadamente tardía, single_post_title(); parece funcionar, ¡usaré eso! ;)

User User
21 may 2015 15:08:23

¿Por qué no usar el objeto wp_query? $wp_query->query[pagename]

nodws nodws
3 may 2019 02:12:36

single_post_title(); produce el resultado deseado.

Clarus Dignus Clarus Dignus
16 sept 2019 00:29:32

Definitivamente single_post_title().

Dragi Postolovski Dragi Postolovski
30 ene 2021 02:37:44
0

Es correcto que the_title() en la página del blog devolverá el título de la publicación más reciente y, por lo tanto, no se puede utilizar.

Cuando una página se establece como "página de entradas" desde los ajustes de lectura, WP llama al archivo de plantilla home.php (o index.php si home.php no existe) en lugar de page.php (ver: Jerarquía de Plantillas).

Por lo tanto, el condicional is_page() no funcionará en la página del blog porque ya no es una página.

La única manera de mostrar el título real de la página es usar single_post_title();

single_post_title() es parte del archivo general-template.php que indica claramente:

Si estamos en la página del blog y esa página no es la página de inicio o una página única designada como la página de inicio, usa el título de la página contenedora.

Puedes revisar el código y los comentarios aquí https://core.trac.wordpress.org/browser/tags/4.4/src/wp-includes/general-template.php#L871

5 ene 2016 19:53:50
2
$our_title = get_the_title( get_option('page_for_posts', true) );
7 jul 2017 13:33:08
Comentarios

Por favor [edita] tu respuesta, y agrega una explicación: ¿por qué eso podría resolver el problema?

fuxia fuxia
7 jul 2017 16:35:26

¡funciona! ja ja

Iggy Iggy
2 jun 2019 05:42:15
0

Primero, debes verificar si es una página de blog. Luego, si es verdadero, usa la función single_post_title().

( ( !is_front_page() && is_home() ) ? single_post_title() : the_title() );

Aquí se considera que la página del blog no es la página de inicio.

is_page() no funcionará ya que la página del blog ya no es una página en WordPress.

21 mar 2024 23:15:35
0

Sé que ha pasado tiempo desde la publicación original, pero espero que esto ayude a otros que llegaron aquí buscando lo mismo.

single_post_title() funciona para páginas hasta que llegas a las páginas de blog y categorías (y presumiblemente páginas de productos y etiquetas en WooCommerce).

Así que primero simplemente verifica si es una página, de lo contrario usa la función wp_title

if (is_page()) {
    single_post_title();
} else {
    echo rtrim(wp_title('', false), '- ');
}

Tuve que eliminar el título del sitio de mis configuraciones, pero de todos modos lo estaba agregando manualmente a ambos lados de esta función.

28 mar 2018 12:39:47
0

Hay dos formas de obtener el título de una entrada/página en WordPress.

get_the_title(); y the_title();

Cómo usar get_the_title();

<h1 class="entry-header text-primary fst-italic"><?php echo esc_html( get_the_title() ); ?></h1>

Cómo usar the_title();

the_title('<h1 class="entry-title  text-primary fst-italic">', '</h1>');

¿Cuál es la diferencia entre get_the_title(); y the_title();? the_title(); muestra (echo) su valor directamente, mientras que get_the_title(); no lo muestra (solo retorna el valor).


Este es el estándar para las funciones de WordPress: las funciones que comienzan con the_ mostrarán lo que la función correspondiente que comienza con get_ retorna. Otras funciones tienen un parámetro para elegir si mostrar o no, y otras solo retornan valores.

7 jun 2021 03:58:57