Skip to content

Tout pour WordPress, le développement web — et plus encore

🔧 Comment personnaliser les titres WordPress : 4 techniques avec functions.php

🔧 Comment personnaliser les titres WordPress : 4 techniques avec functions.php

Les titres dans WordPress sont bien plus qu’un simple texte en haut d’une page. Ils agissent simultanément sur quatre plans: SEO (balise titre dans les SERP), navigation (onglet du navigateur), design (hiérarchie visuelle sur la page) et contrôle éditorial (ce que les auteurs rédigent). Mais les réglages par défaut de l’administration ne couvrent que l’essentiel; pour affiner, il faut passer par du code.

Le problème s’aggrave lorsque plusieurs auteurs interviennent sur un site. L’un rédige des titres de 120 caractères et casse la mise en page. Un autre utilise des termes que votre partenaire a interdits par contrat. Un troisième oublie que le titre de la page dans les SERP et celui affiché sur le site sont deux champs distincts. Vous ne pouvez pas suivre tout le monde manuellement.

Voici quatre techniques précises pour configurer les titres WordPress via functions.php. Chacune répond à un besoin spécifique: de la troncature automatique de la longueur au blocage programmatique de mots interdits. Le code s’appuie sur des filtres WordPress documentés et a été testé sur WP 6.x. Vous trouverez en fin d’article une FAQ sur le sujet.

💡 Aperçu rapide:

  • Limiter automatiquement la longueur des titres via le filtre the_title pour empêcher les auteurs de casser la mise en page
  • Modifier l’alignement du titre d’un article dans single.php sans extension ni modification CSS
  • Bloquer la publication d’articles contenant des mots interdits via le hook transition_post_status
  • Changer le séparateur de la balise titre et ajouter des titres personnalisés via des champs meta

Comment limiter la longueur des titres dans WordPress

Un titre trop long peut ruiner même la mise en page la plus soignée. Sur la page d’accueil où des extraits sont affichés, un titre de 120 caractères déborde de la carte et le design paraît cassé. Cela pénalise particulièrement les sites utilisant des grilles multi-colonnes.

La solution est le filtre the_title, qui tronque le titre à une limite définie lors de l’affichage sur la page. L’enregistrement réel en base de données reste inchangé; seul le texte affiché est raccourci.

Code pour functions.php:

1function sdstudio_limit_title_length( $title ) {
2 $max = 60;
3 if ( mb_strlen( $title ) > $max ) {
4 return mb_substr( $title, 0, $max ) . ' …';
5 }
6 return $title;
7}
8add_filter( 'the_title', 'sdstudio_limit_title_length' );

Voici ce qui se passe: mb_strlen compte correctement les caractères pour le cyrillique (contrairement à strlen, qui compte les octets). Lorsque la limite de 60 caractères est dépassée, le titre est tronqué et des points de suspension sont ajoutés à la fin pour que les lecteurs comprennent qu’il ne s’agit pas du texte complet. Vous pouvez remplacer 60 par n’importe quel autre nombre adapté à votre mise en page.

Où appliquer cela de manière sélective? Si vous devez tronquer les titres uniquement à un endroit précis (par exemple, dans un widget d’articles populaires), enveloppez add_filter dans une balise conditionnelle:

1if ( is_home() || is_front_page() ) {
2 add_filter( 'the_title', 'sdstudio_limit_title_length' );
3}

La même approche fonctionne pour is_archive(), is_category() et tout autre contexte.

Comment modifier l’alignement du titre d’un article

Les thèmes WordPress varient. Certains proposent des options d’alignement dans l’outil de personnalisation; d’autres non. Si votre thème appartient à la seconde catégorie, le titre sera aligné à gauche par défaut et vous ne trouverez aucun réglage pour cela dans l’administration.

L’alignement du titre se définit dans le template single.php, le fichier responsable de l’affichage des articles individuels. Il suffit de quatre étapes:

Éditeur de thème WordPress single.php avec code d'alignement de titre
  • Ouvrez Apparence → Éditeur de thème (ou le fichier single.php via FTP ou le panneau d’hébergement)
  • Repérez la ligne <?php the_title(); ?>, qui affiche le titre
  • Enveloppez-la dans une balise avec l’alignement souhaité

Alignement à gauche (par défaut):

1<?php the_title(); ?>

Centré:

1<div style="text-align: center;"><?php the_title(); ?></div>

À droite:

1<div style="text-align: right;"><?php the_title(); ?></div>
  • Enregistrez le fichier et ouvrez n’importe quel article; le titre apparaîtra dans la position spécifiée

Cette méthode est basique mais fonctionne avec n’importe quel thème. Une approche plus propre consiste à ajouter une classe CSS via le filtre body_class et à styliser via la feuille de styles, mais pour une correction rapide, les styles en ligne suffisent.

Comment bloquer les mots indésirables dans les titres

Un avertissement textuel aux auteurs («merci de ne pas utiliser le mot X dans les titres») fonctionne jusqu’à la première échéance oubliée. Tôt ou tard, quelqu’un publiera un titre contenant une expression interdite et, dans le meilleur des cas, l’article sera vu en interne; dans le pire des cas, un partenaire ou un concurrent le verra.

Le blocage programmatique résout le problème de manière radicale: WordPress empêche tout simplement la publication de l’article si le titre contient un mot interdit. L’auteur voit un message d’erreur et doit corriger le texte avant de publier.

Code functions.php pour bloquer les mots interdits dans les titres WordPress

Code pour le fichier functions.php:

1function sdstudio_block_forbidden_title_words( $new_status, $old_status, $post ) {
2 if ( 'publish' !== $new_status || 'publish' === $old_status ) {
3 return;
4 }
5
6 $restricted = array( 'word1', 'word2', 'word3' );
7 $title = $post->post_title;
8
9 foreach ( $restricted as $word ) {
10 if ( mb_stripos( $title, $word ) !== false ) {
11 wp_die( 'Ошибка: заголовок содержит запрещённое слово — «' . esc_html( $word ) . '». Измените заголовок и попробуйте снова.' );
12 }
13 }
14}
15add_action( 'transition_post_status', 'sdstudio_block_forbidden_title_words', 10, 3 );

Fonctionnement: le hook transition_post_status se déclenche à chaque changement de statut d’un article. Nous vérifions que le nouveau statut est publish et que l’ancien statut n’est pas publish (sinon, chaque mise à jour d’un article déjà publié serait également bloquée). Ensuite, mb_stripos recherche chaque mot interdit dans le titre, sans tenir compte de la casse. S’il en trouve un, wp_die bloque la publication avec un message explicite.

Pour ajouter vos propres mots, remplacez mot1, mot2, mot3 dans le tableau $restricted. Vous pouvez ajouter autant de mots que nécessaire; la fonction les parcourra tous.

Bonus: afficher la liste des mots interdits aux auteurs juste sous le champ du titre. Ajoutez ce code dans le même fichier functions.php:

1function sdstudio_show_restricted_words_notice() {
2 $restricted = array( 'word1', 'word2', 'word3' );
3 echo '<div style="color:#856404;background:#fff3cd;padding:6px 12px;margin:8px 0;border-radius:4px;font-size:13px;">';
4 echo 'Запрещённые слова в заголовке: <strong>' . implode( ', ', $restricted ) . '</strong>';
5 echo '</div>';
6}
7add_action( 'edit_form_after_title', 'sdstudio_show_restricted_words_notice' );

Désormais, la liste des mots interdits est visible au-dessus de l’éditeur, les auteurs n’ont donc pas à deviner ce qui est prohibé.

Séparateur de titre et balises title personnalisées

Le séparateur de titre est le symbole qui s’affiche entre le nom du site et le titre de l’article dans la balise <title>. Dans les résultats de recherche, il apparaît sous la forme «Nom du site | Titre de l’article» ou «Nom du site - Titre de l’article». Cela n’influence pas directement le taux de clic, mais cela distingue visuellement votre extrait de ceux des autres.

Depuis WordPress 4.4, le séparateur se modifie via le filtre document_title_separator. Le code tient en trois lignes:

1function sdstudio_change_title_separator( $separator ) {
2 return '|';
3}
4add_filter( 'document_title_separator', 'sdstudio_change_title_separator' );

Vous pouvez remplacer le symbole de la troisième ligne par n’importe quel caractère: barre verticale, tiret, signe supérieur, point médian. N’utilisez pas de caractères spéciaux comme ★ ou →; Google ne les affiche pas et votre extrait dans les résultats de recherche paraîtra brouillon.

Pour les versions antérieures à WordPress 4.4: la fonction wp_title est obsolète, mais si votre site tourne encore sur une ancienne version, mettez-le à jour d’abord (c’est une question de sécurité), puis ajustez le séparateur. L’ancien code utilisant wp_title reste dans la documentation de WordPress à titre de référence historique, mais il n’est pas recommandé.

Comment définir une balise title personnalisée pour un article individuel

Il arrive que la balise title destinée aux SERP doive être différente du H1 présent sur la page. Les extensions SEO (Yoast, Rank Math) proposent un champ dédié pour cela. Mais si vous n’utilisez pas d’extension SEO, la tâche se résout avec un champ personnalisé et le filtre pre_get_document_title.

Code pour le fichier functions.php:

1function sdstudio_custom_title_from_meta( $title ) {
2 if ( is_singular() ) {
3 $custom = get_post_meta( get_the_ID(), 'custom_post_title', true );
4 if ( $custom ) {
5 return esc_html( $custom );
6 }
7 }
8 return $title;
9}
10add_filter( 'pre_get_document_title', 'sdstudio_custom_title_from_meta', 20 );

Mode d’emploi:

  • Ouvrez l’article qui nécessite une balise <title> personnalisée
  • Dans le bloc «Champs personnalisés» (si vous ne le voyez pas, activez-le dans «Options de l’écran»), créez un champ nommé custom_post_title
  • Saisissez la balise title souhaitée comme valeur, par exemple «Comparatif et tests des extensions de cache 2026»
  • Enregistrez l’article

Si le champ personnalisé n’est pas renseigné, WordPress utilise la balise title standard (titre de l’article + séparateur + nom du site). Le mécanisme fonctionne uniquement pour les pages singulières (is_singular); les titres des archives et de l’administration ne sont pas affectés.

Remarque importante: pre_get_document_title a une priorité de 20, ce qui garantit que le filtre s’exécute APRÈS la formation standard du titre et la remplace.

Regardez la vidéo de 6 minutes sur le sujet; elle montre le processus visuel de configuration des balises title via l’administration de WordPress et les extensions SEO.

⁉️🤔 Foire aux questions

Le code de cet article fonctionne-t-il sur WordPress 6.x (la version actuelle sur wordpress.org)?

Oui, tout le code a été testé sur la version actuelle de WordPress. Les filtres the_title, document_title_separator et pre_get_document_title font partie du cœur de WordPress depuis les versions 4.4-5.0 et sont entièrement pris en charge sous WP 6.x. Le seul changement par rapport aux anciens tutoriels: le hook obsolète publish_post a été remplacé par transition_post_status.

Dois-je modifier le fichier functions.php du thème enfant ou puis-je utiliser celui du thème principal?

Modifiez toujours le thème enfant. Si vous modifiez le functions.php du thème principal, toutes vos modifications seront perdues lors de la prochaine mise à jour. Si vous n’avez pas de thème enfant, créez-en un: cela prend cinq minutes via l’extension Child Theme Configurator ou manuellement (un fichier style.css + un fichier functions.php avec la directive Template:).

Puis-je obtenir le même résultat avec des extensions plutôt qu’avec du code?

Partiellement. Pour les titres SEO, il existe Yoast SEO et Rank Math. Pour la limitation de longueur, il y a des extensions comme Title Length Limiter, mais leur maintenance est aléatoire. Pour le blocage de mots et le changement de séparateur, il n’existe pas d’extension standard; seul le code fonctionne. De plus, chaque extension supplémentaire ralentit le site, tandis que quatre lignes dans functions.php n’ajoutent aucune charge perceptible.

Que faire si le site affiche un écran blanc après avoir modifié le fichier functions.php?

Connectez-vous au serveur via FTP ou via le gestionnaire de fichiers de votre hébergement, ouvrez functions.php et supprimez le code que vous avez ajouté. Si vous n’avez pas d’accès FTP, allez dans phpMyAdmin, cherchez la table wp_options, la ligne active_plugins, et désactivez temporairement toutes les extensions (cela videra le cache). Pour l’avenir: avant toute modification de functions.php, activez WP_DEBUG dans wp-config.php; ainsi, au lieu d’un écran blanc, vous verrez le texte de l’erreur.

Le séparateur de titre influence-t-il le SEO?

> Il n’y a pas d’effet direct sur le classement; Google n’évalue pas si vous utilisez | ou -. Il y a un effet indirect: Google peut ne pas afficher les séparateurs non standard (, ), et votre extrait dans les résultats de recherche sera visuellement moins bon. Par ailleurs, un séparateur reconnaissable renforce l’identité de marque: les utilisateurs s’habituent au format «Marque | Titre» et repèrent vos résultats plus vite dans les SERP.

Quoi mettre en place et dans quel ordre

Les quatre techniques ci-dessus couvrent tous les principaux scénarios de travail sur les titres WordPress. L’ordre de mise en œuvre va du plus simple au plus complexe:

D’abord, changez le séparateur de la balise titre; cela représente trois lignes de code avec des résultats immédiats dans les pages de résultats. Ensuite, configurez des balises <title> personnalisées via des champs meta si votre site comporte des pages clés qui nécessitent des titres SERP distincts. Après cela, mettez en place le filtre de longueur; il protégera la mise en page contre les titres trop longs sans aucune action de la part des auteurs. Enfin, ajoutez le bloqueur de mots interdits une fois que la liste des expressions à proscrire a été validée et approuvée.

Avant toute modification de functions.php, sauvegardez le fichier: copiez son contenu dans un éditeur de texte et enregistrez-le en local. Cela prend dix secondes et vous fera gagner des heures de récupération en cas d’erreur.