Visualizzare il Titolo della Pagina su index.php
Ho impostato la mia pagina dei post come index.php
e lì ho il mio titolo principale (come faccio su tutte le pagine).
Sto avendo difficoltà a visualizzare il titolo della pagina. La pagina si chiama 'Blog' in WordPress ed è stata specificata come pagina dei post.
Se mostro il titolo della pagina con wp_title('');
, ottengo il titolo della pagina — 'Blog' — ma con il nome del sito dopo di esso (forse a causa del plugin Yoast SEO).
Se uso the_title()
mi restituisce il titolo del post più recente, anche se sto chiamando la funzione fuori dal loop.
Quindi ho dovuto ricorrere al semplice hardcoding <h1>Blog</h1>
che è tutt'altro che ideale.
C'è un modo per recuperare dinamicamente il nome del titolo della pagina ma solo il titolo della pagina da solo?

Strano. Al di fuori del loop, the_title() dovrebbe restituirti il nome della pagina corrente, se sei effettivamente su una pagina e non stai visualizzando un post specifico. Se invece mostra il titolo di un post, potrebbe significare che in qualche modo ti trovi all'interno di un loop. Ma se fosse vero, wp_title non dovrebbe mostrare "Blog".
Prova a verificare se altre opzioni danno lo stesso risultato:
//the_title();
single_post_title();
echo $post->post_name; // Penso che questo mostri il nome della pagina nell'URL
Controlla anche is_page(). Potresti provare il test is_page('Blog').
if (is_page('blog')) {
echo 'Blog';
}
else {
the_title();
}
solo per vedere cosa succede.

scusa per la risposta incredibilmente in ritardo, single_post_title();
sembra funzionare, opterò per quello! ;)

È corretto che the_title()
nella pagina del blog restituirà il titolo del post più recente e quindi non può essere utilizzato.
Quando una pagina è impostata come "pagina articoli" dalle impostazioni di lettura, WordPress utilizza il template file home.php
(o index.php
se home.php
non esiste) invece di page.php
(vedi: Gerarchia dei Template).
Quindi, il condizionale is_page()
non funzionerà sulla pagina del blog perché non è più una pagina.
L'unico modo per visualizzare il titolo effettivo della pagina è utilizzare single_post_title();
single_post_title()
fa parte del file general-template.php che afferma chiaramente:
Se siamo sulla pagina del blog e quella pagina non è la homepage o una singola pagina designata come homepage, utilizza il titolo della pagina contenitore.
Puoi rivedere il codice e i commenti qui https://core.trac.wordpress.org/browser/tags/4.4/src/wp-includes/general-template.php#L871

Innanzitutto, devi verificare se si tratta di una pagina blog. Se è vero, utilizza la funzione single_post_title()
.
( ( !is_front_page() && is_home() ) ? single_post_title() : the_title() );
Qui si considera che la pagina blog non sia la front page.
is_page()
non funzionerà dato che la pagina blog non è più una pagina in WordPress

So che è passato un po' di tempo dall'apertura di questo thread, ma spero che possa essere utile ad altri che sono arrivati qui cercando la stessa soluzione.
La funzione single_post_title() funziona per le pagine fino a quando non si arriva alle pagine del blog e delle categorie (e presumibilmente anche alle pagine di prodotti e tag in WooCommerce).
Quindi per prima cosa verifica semplicemente se si tratta di una pagina, altrimenti utilizza la funzione wp_title
if (is_page()) {
single_post_title();
} else {
echo rtrim(wp_title('', false), '- ');
}
Ho avuto bisogno di rimuovere il titolo del sito dalle impostazioni, ma in ogni caso lo stavo aggiungendo manualmente su entrambi i lati di questa funzione.

Ci sono due modi per ottenere il titolo di un post/pagina in WordPress.
get_the_title();
e the_title();
Come usare get_the_title();
<h1 class="entry-header text-primary fst-italic"><?php echo esc_html( get_the_title() ); ?></h1>
Come usare the_title();
the_title('<h1 class="entry-title text-primary fst-italic">', '</h1>');
Qual è la differenza tra get_the_title();
e the_title();
?
the_title();
visualizza direttamente il valore, mentre get_the_title();
non lo visualizza (restituisce solo il valore).
Questo è lo standard per le funzioni di WordPress: le funzioni che iniziano con the_
visualizzeranno ciò che la corrispondente funzione che inizia con get_
restituisce. Altre funzioni hanno un parametro per scegliere se visualizzare o meno, mentre altre restituiscono solo valori.
