Come Impostare Dinamicamente il Titolo della Pagina?

7 nov 2011, 20:40:15
Visualizzazioni: 87.1K
Voti: 27

È 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

1
Commenti

Da dove verrebbe il valore? Cosa c'è in quella pagina che ha il valore di #123?

Sagive Sagive
7 nov 2011 20:51:20
Tutte le risposte alla domanda 7
3
27

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:

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

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

7 nov 2011 20:55:50
Commenti

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

Petrus Theron Petrus Theron
29 mar 2017 19:47:45

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

Nick Barrett Nick Barrett
9 lug 2018 06:55:42

Il filtro the_title non funziona più nelle versioni più recenti di Wordpress, utilizza i filtri document_title_parts o pre_get_document_title come dettagliato in altre risposte.

Brendan Nee Brendan Nee
15 nov 2018 04:48:07
2
17

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;
}
15 nov 2018 04:46:35
Commenti

ma dove passi il parametro a un filtro?

Tintinabulator Zea Tintinabulator Zea
22 dic 2018 07:38:33

La funzione sopra modifica il modo in cui funzionano le funzioni the_title() e get_the_title() - quindi non c'è bisogno di passare alcun parametro.

Brendan Nee Brendan Nee
25 dic 2018 21:51:51
2

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";
}

Fonte

12 ago 2018 22:41:37
Commenti

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!

MatthewLee MatthewLee
11 gen 2019 18:35:47

@MatthewLee Felice di sapere che ti è stato utile :)

Nathan Arthur Nathan Arthur
11 gen 2019 20:52:20
0

Quando hai Yoast abilitato, devi sovrascrivere il titolo in questo modo:

add_filter('wpseo_title', 'custom_titles', 10, 1);
function custom_titles() {

  global $wp;
  $current_slug = $wp->request;

  if ($current_slug == 'foobar') {

    return 'Foobar';
  }
}
14 apr 2019 23:29:15
4

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

16 dic 2013 00:32:47
Commenti

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

Geoffrey Geoffrey
26 mar 2015 10:59:48

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 )

landed landed
18 gen 2017 20:00:11

purtroppo non ha funzionato neanche per me.

Debbie Kurth Debbie Kurth
8 giu 2019 08:46:46

Questa risposta ha quasi 6 anni; come autore (e qualcuno che non lavora più attivamente con WP), suggerirei di consultare la documentazione più recente.

nickb nickb
9 giu 2019 22:33:46
0

Se stai utilizzando All In One Seo v4+, usa questo filtro:

add_filter( 'aioseo_title', 'aioseo_filter_title' );

function aioseo_filter_title( $title ) {
   if ( is_singular() ) {
      return $title . 'qualche contenuto aggiuntivo per il titolo qui';
   }
   return $title;
}
29 ott 2021 14:04:28
2
-1

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.

5 set 2020 08:14:55
Commenti

Questo però non sarà buono per la SEO.

Alex Cook Alex Cook
21 nov 2020 02:57:00

@AlexCook Hai assolutamente ragione. Stavo lavorando a una soluzione rapida per qualcosa in cui la SEO non era importante. Ora mi sono completamente dimenticato a cosa servisse. lol.

Feng Jiang Feng Jiang
21 nov 2020 17:29:12