Come Impostare Dinamicamente il Titolo della Pagina?
È possibile modificare il titolo della pagina con il codice?
Ad esempio, supponiamo che il nome della pagina sia "Prenota il tuo Ordine", ma voglio cambiarlo in "Ordine Prenotazione #123".
Ho fatto alcune ricerche su Google e ho guardato qui ma non ho trovato nulla. Qualcuno conosce un plugin o un modo per farlo?
wp_title restituisce il titolo della pagina ma non permette di impostarlo: http://codex.wordpress.org/Function_Reference/wp_title
Non esiste una documentazione specifica su questo argomento, ma puoi sempre applicare un filtro a the_title
in questo modo:
add_filter('the_title','some_callback');
function some_callback($data){
global $post;
// dove $data sarebbe la stringa(#) "titolo corrente"
// Esempio:
// (dovresti modificare $post->ID con il metodo che usi per ottenere il numero dell'ordine del libro,
// ma puoi vedere come funziona in questo modo con global $post;)
return 'Ordine Libro #' . $post->ID;
}
Consulta questi:

Questo sembra sovrascrivere tutti i titoli. Come posso sovrascrivere solo il titolo corrente?

Dovresti aggiungere una condizione alla callback, ad esempio if ($post->ID == 45) { ... }

A partire da WordPress 4.4, puoi utilizzare il filtro document_title_parts
per modificare il titolo.
Aggiungi il seguente codice a functions.php
:
add_filter('document_title_parts', 'my_custom_title');
function my_custom_title( $title ) {
// $title è un array di parti del titolo, incluso un elemento chiamato `title`
$title['title'] = 'Il mio nuovo titolo';
if (is_singular('post')) {
$title['title'] = 'Nuovo articolo: ' . $title['title'];
}
return $title;
}

Per coloro che desiderano modificare l'attributo title
del documento, ho scoperto che utilizzare il filtro wp_title
non funziona più. Invece, utilizza il filtro pre_get_document_title
:
add_filter("pre_get_document_title", "my_callback");
function my_callback($old_title){
return "Il Mio Titolo Modificato";
}

grazie per essere tornato anni dopo per pubblicare questo aggiornamento. Avevo usato wp_title in un mio plugin per anni e non mi ero reso conto che non funzionava più fino ad ora e la tua risposta mi ha risparmiato un sacco di fatica. Quindi grazie!

Dipende davvero se vuoi visualizzare un titolo personalizzato per la pagina corrente (cioè il contenuto del tag <title></title>
nell'header) o filtrare il titolo delle pagine nel corpo della pagina o negli elenchi.
Nel primo caso (il titolo della pagina corrente), prova ad aggiungere un filtro per wp_title()
in questo modo:
http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title
Se vuoi modificare i titoli delle pagine in modo generale, filtrare the_title()
farà al caso tuo:
http://codex.wordpress.org/Plugin_API/Filter_Reference/the_title

Nella mia esperienza, è necessario filtrare sia wp_title
che the_title
per coprire entrambi i casi.

Non sono sicuro se sia a causa della deprecazione, ma questo non funziona per me. Ho provato combinazioni e filtri inline e il nuovo apply_filters( 'pre_get_document_title', string $title )

In realtà il modo più semplice per farlo è utilizzare una riga di JavaScript.
Inserisci il seguente codice nel template:
<script>document.title = "<?php echo $new_title; ?>";</script>
Questo codice non deve necessariamente essere nell'header HTML, può essere inserito anche nel body della pagina.
