Come impostare dinamicamente il titolo della pagina?


19

È possibile cambiare 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 libro n. 123".

Ho cercato un po 'Google e ho guardato qui e non ho visto nulla. Qualcuno sa di un plugin o di un hack?

wp_title restituisce il titolo della pagina ma non consente l'impostazione del titolo della pagina: http://codex.wordpress.org/Function_Reference/wp_title


Da dove verrebbe il valore? cosa ha in quella pagina il valore di # 123?
Sagive SEO

Risposte:


23

Non c'è documentazione su di esso ma è sempre possibile applicare un filtro in the_titlequesto modo:

add_filter('the_title','some_callback');
function some_callback($data){
    global $post;
    // where $data would be string(#) "current title"
    // Example:
    // (you would want to change $post->ID to however you are getting the book order #,
    // but you can see how it works this way with global $post;)
    return 'Book Order #' . $post->ID;
}

Vedi questi:

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

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


Questo sembra prevalere su tutti i titoli. Come posso sostituire solo il titolo corrente?
Petrus Theron,

Dovresti aggiungere una condizione al callback, ad esif ($post->ID == 45) { ... }
Nick Barrett il

3
the_titleIl filtro non funziona più nelle ultime versioni di Wordpress, usa document_title_partso pre_get_document_titlefiltri come dettagliato in altre risposte.
Brendan Nee,

8

A partire da Wordpress 4.4, è possibile utilizzare il filtro Wordpress document_title_partsper modificare il titolo.

Aggiungi quanto segue a functions.php:

add_filter('document_title_parts', 'my_custom_title');
function my_custom_title( $title ) {
  // $title is an array of title parts, including one called `title`

  $title['title'] = 'My new title';

  if (is_singular('post')) {
    $title['title'] = 'Fresh Post: ' . $title['title'];
  }

  return $title;
}

ma dove passi il parametro a un filtro?
Tintinabulator Zea

Le modifica funzione sopra la strada the_title()e get_the_title()funzioni operano - quindi non è necessario passare alcun parametro.
Brendan Nee,

5

Per coloro che desiderano modificare l' titleattributo del documento , ho scoperto che l'utilizzo del wp_titlefiltro non funziona più. Utilizza invece il pre_get_document_titlefiltro :

add_filter("pre_get_document_title", "my_callback");
function my_callback($old_title){
    return "My Modified Title";
}

fonte


1
grazie per essere tornato anni dopo a pubblicare questo aggiornamento. Ho 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 molto sforzo. Quindi grazie!
Matthew,

@MatthewLee Lieto di sentirti aiutato :)
Nathan ReinstateMonica Arthur,

2

Dipende molto se stai cercando di visualizzare un titolo personalizzato per la pagina corrente (ovvero il contenuto del <title></title>tag nell'intestazione) o di 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 in questo wp_title()modo: http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title

Se vuoi modificare i titoli delle pagine su tutta la linea, il filtro the_title()farà il trucco: http://codex.wordpress.org/Plugin_API/Filter_Reference/the_title


In realtà nella mia esperienza è necessario filtrare entrambi wp_titlee the_titlecoprire entrambi.
Geoffrey,

Non sono sicuro che sia a causa della deprecazione, ma non funziona per me. Ho provato combinazioni e filtri incorporati e il nuovo apply_filters ('pre_get_document_title', stringa $ title)
sbarcato il

purtroppo né ha funzionato neanche per me.
Debbie Kurth,

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

1

Quando hai abilitato Yoast 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';
  }
}

-2

Quindi vuoi cambiare il titolo in base alla pagina? Innanzitutto imposta un post personalizzato incontrato una casella. Smashing Magazine ne ha parlato recentemente: http://wp.smashingmagazine.com/2011/10/04/create-custom-post-meta-boxes-wordpress/ . È quindi possibile creare una semplice funzione per sostituire il titolo se la meta box personalizzata ha un valore.

Esistono diversi plugin SEO che forniscono questa funzionalità. Prova Yoast SEO per esempi: http://wordpress.org/extend/plugins/wordpress-seo/

Spero che sia di aiuto.


1
Queste soluzioni non cambieranno il titolo "dinamicamente" ma "manualmente".
Gustavo,

1
peggior soluzione di sempre
Vishal Kumar Sahu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.