Développez vos propres fonctions SEO avec WordPress: le titre

Les essais de plugins SEO réalisés précédemment, m’ont relativement déçu. Ils m’ont permis cependant d’étudier les différentes méthodes utilisées. Ces méthodes sont simples, et peuvent aisement être développées dans un thème, par exemple.
Cet article fait partie d’une série de trois: le premier (celui-ci) va traiter du titre et de la meta balise robots, le second de la description, et le dernier, des mots-clés.

Objectif

Nos fonctions doivent simplement remplir automatiquement les balises:

  • title
  • <meta name="robots" content="...">
  • <meta name="description" content="...">
  • <meta name="keywords" content="...">

Les fonctions doivent s’adapter aux différents types de pages de WordPress.

J’insiste sur le terme automatiquement, parce que, pour moi, la vrai valeur ajoutée des fonctions de SEO est bien là.

La génération automatique permet en effet, un gain de temps non négligeable.

Structure générale

Dans cet article et les suivants, nous allons considérer que nous ajoutons ces fonctions à un thème (le principe serait le même pour un plugin).

Si votre thème est bien fait, son entête doit contenir un appel à la fonction wp_head() (entre les balises HTML <head> et </head>.

Nous allons modifier le comportement de wp_head(), en y ajoutant nos propres fonctions (voir principe de Hook dans la documentation de WordPress).

Nos fonctions vont devoir

  1. Regarder dans quelle situation nous sommes (page articles, page archive, page d’accueil …),
  2. Collecter les informations disponibles,
  3. Mettre en forme ces informations

Le point 1 est relativement facile grâce aux fonctions disponibles: is_single(), is_page(), is_category()

Le point 2 est un peu plus problématique: il faut, autant que possible, ne pas surcharger notre blog, avec de trop nombreuses requêtes. Nous essaierons donc de puiser les informations existantes.

Le point 3 n’est pas forcement évident: il faut en effet s’assurer que le contenu afficher ne perturbera pas le bon fonctionnement du blog.

Pour commencer, nous allez ouvrir ou créer le fichier functions.php à la racine du thème que vous utilisez. Puis saisir le code suivant:

add_action('wp_head', 'my_seo_title');
 
function my_seo_title() {
	// Fonctions affichant le titre
}

La fonction my_seo_title va contenir tout ce qu’il faut pour afficher les balises title et meta robots correctement.

Construction des titres et des balises meta robots

Le titre que nous allons construire aura la structure suivante: < chaîne de caractères > | < titre du blog >

Les balises meta robots servent à indiquer aux moteurs de recherche s’il faut scanner la page, et/ou suivre les liens qu’elle contient.

Voici la fonction complète:

function my_seo_title() {
  $separator  = '|';
  $blog_name  = get_bloginfo('name');
 
  if((!is_paged() ) &amp;&amp; ( is_single() || is_page() || is_home() || is_category())) $follow_content = 'index, follow';
  else $follow_content = 'noindex, follow, noodp, noydir';
 
  if ( (is_single() || is_page()) ) {
      $page_title = the_title('','', FALSE);
  }
  elseif (is_category()) {
      $page_title = 'Category: '.single_cat_title('', FALSE);
  }
  elseif ( is_tag() ) {
      $page_title  = 'Tag: '.single_tag_title('', FALSE);
  }
  elseif (is_date()) {
      $page_title = 'Post of ';
      if (is_day()) {
          $page_title .= get_the_time('j F Y', FALSE);
      }
      elseif (is_month()) {
          $page_title .= get_the_time('F Y', FALSE);
      }
      elseif (is_year()) {
          $page_title .= get_the_time('Y', FALSE);
      }
  }
  elseif (is_search()) {
       $page_title = 'Search results for: '.$_GET['s'];
  }
  if ($page_title != '') $page_title .= ' '.$separator.' ';
 $page_title .= $blog_name;
 
  echo ''."n";
  echo ''."n";
}

En ligne 5 et 6, nous indiquons aux moteurs de recherche ce qu’ils doivent faire de la page en cours: dans le cas d’une page, d’un article ou d’une page ‘catégorie’, nous leur demandons de scanner le contenu et de suivre les liens. Dans tous les autres cas, nous leur demandons de ne rien scanner.

A partir de la ligne 8, nous essayons de savoir ou nous sommes, et construisons le titre.
En ligne 32, si $page_title est vide, nous n’avons pas trouvé sur quelle page nous sommes.
Si cette variable n’est pas vide, nous lui ajoutons un séparateur.

En ligne 33 nous complétons le titre par le nom du blog.

Les lignes 34 et 35 assurent l’affichage des balises. En ligne 34, nous nettoyons le titre des éventuels caractères spéciaux dangereux. Ce nettoyage peut également être effectué avec des fonctions WordPress comme sanitize_title().

Le code source complet est disponible ici:


my_seo_title
Titre: my_seo_title (234 clics)
Légende:
Nom du fichier: my_seo_title.txt
Taille: 1 KB

Conclusion

Nous avons donc maintenant un thème qui aura, pour chacune de ses pages, une balise title, et une balises meta robots.

Comme vous pouvez le constater, ces fonctions n’ont rien de réellement compliquées. En quelques lignes de code, nous obtenons déjà de bons résultats. Nous verrons dans le prochain article le cas de la balise meta description.

Autres articles de cette série

  1. Développer vos propres fonctions SEO avec WordPress: les mots-clés (19 février 2009)
  2. Code your own SEO function with WordPress: the keywords (19 février 2009)
  3. Développer ses propres fonctions SEO avec WordPress: la description (12 février 2009)
  4. Develop your own SEO features with WordPress: the description (12 février 2009)
  5. Développez vos propres fonctions SEO avec WordPress: le titre (5 février 2009)
  6. Develop your own SEO functions with WordPress: the title (5 février 2009)
  7. 6 plugins SEO pour WordPress (5 janvier 2009)

8 thoughts on “Développez vos propres fonctions SEO avec WordPress: le titre”

  1. Bonjour,
    Il faut systematiquement utiliser les fonctions htmlspecialchars et stripslashes.
    Par exemple: htmlspecialchars(stripslashes(< texte a afficher >))

    Normalement avec ces deux fonctions, le texte affiche est « propre », au sens HTML du terme.

  2. Je viens de découvrir vos 3 posts consacrés aux fonctions SEO. D’emblée, l’idée géniale de remplacer un plugin lourd par quelques fonctions m’a enthousiasmée. De fait, après quelques aménagements personnels, j’utilise avec succès les fonctions my_seo_title()et my_seo_description().
    Toutefois, je rencontre un petit problème de typographie avec les données du type single_tag_title ou bien category_description qui ne supportent pas la présence d’apostrophe, systématiquement retranscrite en ”. Losqu’il s’agit d’un post_excerp, les apostrophes sont bien retranscrites.
    Après de vaines recherches, je me permets de vous soumettre mon problème. Je dois préciser que mon php est extrêmement extrêmement débutant…
    Y aurait-t-il une solution simple? remplacer l’apostrophe par son code ASCII ne change absolument rien malheureusement.
    Par avance merci de votre réponse.

  3. Bonjour,

    Merci pour votre blog remarquable que je découvre en même temps que je m’initie au développement avec WordPress.

    J’ai beaucoup de lecture à faire.

    PS: Le premier lien du texte de l’article(« Les essais de plugins SEO ») pointe vers localhost/…..

  4. Merci pour les compliments.
    J’apprécie ton blog également. Il fait partie de mes abonnements depuis quelques mois. J’ai justement regardé la course de côte de Vatanen ce matin …

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *