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:

Titre: my_seo_title
Fichier: my_seo_title.txt
Taille: 1 Ko

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 du dossier

  1. Développer vos propres fonctions SEO avec WordPress: les mots-clés -
  2. Développer ses propres fonctions SEO avec WordPress: la description -
  3. Développez vos propres fonctions SEO avec WordPress: le titre (Cet article) -
  4. 6 plugins SEO pour WordPress -