web-dev-qa-db-fra.com

Comment définir le titre de la page de manière dynamique?

Est-il possible de changer le titre de la page avec un code?

Par exemple, disons que le nom de la page est "Réservez votre commande", mais je souhaite le modifier en "Commande au livre n ° 123".

Je Google un peu et regardé ici et n'a rien vu. Quelqu'un sait d'un plugin ou pirater?

wp_title renvoie le titre de la page mais ne permet pas de définir le titre de la page: http://codex.wordpress.org/Function_Reference/wp_title

14
Alex Cook

Il n'y a pas de documentation dessus mais vous pouvez toujours appliquer un filtre à the_title comme ceci:

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

Voir ces:

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

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

19
Jared

A partir de Wordpress 4.4, vous pouvez utiliser le filtre Wordpress document_title_parts pour changer le titre.

Ajoutez ce qui suit à 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;
}
5
Brendan Nee

Pour ceux qui souhaitent modifier l'attribut title du document, j'ai constaté que l'utilisation du filtre wp_title ne fonctionnait plus. À la place, utilisez le filtre pre_get_document_title :

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

La source

4
Nathan Arthur

Cela dépend vraiment si vous souhaitez afficher un titre personnalisé pour la page actuelle (c'est-à-dire le contenu de la balise <title></title> dans l'en-tête) ou filtrer le titre des pages dans le corps de la page ou dans les listes.

Dans le premier cas (le titre de la page en cours), essayez d’ajouter un filtre pour wp_title() comme suit: http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title

Si vous souhaitez modifier les titres de page dans tous les domaines, le filtrage de the_title() fera l'affaire: http://codex.wordpress.org/Plugin_API/Filter_Reference/the_title

2
nickb

Lorsque Yoast est activé, vous devez remplacer le titre de la manière suivante:

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

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

  if ($current_slug == 'foobar') {

    return 'Foobar';
  }
}
0
leymannx