Développer ses propres fonctions SEO avec WordPress: la description

Après avoir traité le cas de la balise title, nous allons maintenant nous occuper de la balise meta description.
Ce champ donne un bref résumé du contenu de la page. Vis-à-vis des moteurs de recherche, il doit également contenir les principaux mots-clés permettant de mieux classer l’article.

This post is available in english: Develop your own SEO features with WordPress: the description

Structure générale

Nous reprenons la structure générale de l’article précédent. Initialement, nous avions:

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

Nous allons ajouter maintenant la fonction gérant les descriptions. Nous en profitons pour regrouper nos fonctions SEO:

add_action('wp_head', 'my_seo_features', 1);
 
function my_seo_title() {
   // Fonctions affichant le titre
}
 
function my_seo_description() {
   // fonctions afffichant le champ description
}
 
function my_seo_features() {
	my_seo_title();
	my_seo_description();
}

A noter le paramètre ’1′ dans la fonction add_action. Il permet de placer notre fonction en tête de liste dans les actions a exécuter. De cette façon, nos balises seront situées plutôt en haut de l’entête, contrairement aux balises générées par le code de l’article précédent.

Génération du champ description

Avant de commencer, il faut décider du contenu de cette balise, pour chaque cas. Pour les pages ‘Catégories’, la réponse est simple, puisque les catégories disposent d’une description. Mais dans le cas des articles, des archives, des tags, que faire?

Le tableau suivant résume ce que nous allons faire:

Type de page Description
1. Page d’accueil Champ description du blog
2. Article ou page Le résumé de l’article ou les quelques premières lignes
3. Catégorie La description de la catégorie
4. Tags Le résumé du premier article de la liste
5. Recherche
6. Archives La description générale du blog

Pourquoi ces choix?

  • Au niveau des lignes 1 et 3, nous disposons d’une description, il n’y a rien à faire,
  • Pour la ligne 2, nous pouvons estimer que le résumé de l’article ou de la page donne un bon aperçu de l’article,
  • Pour la ligne 4 et 5, nous pouvons également considérer que les articles correspondant à un tag ou une recherche donnée, se ressemblent plus au moins, et donc, que le résumé du premier article peut être significatif,
  • Pour la lignes 6 (archives), il paraît difficile (voir dangereux) de faire une description de plusieurs articles qui peuvent être très différents.

Comment récupérer les informations concernant les articles? En utilisant les variables globales post et posts, qui sont générées par WordPress avant le chargement des pages.

Ce qui donne la fonction suivante:

function my_seo_description() {
  global $post, $posts;
 
  if ( (is_single() || is_page()) ) {
      $page_description = get_description($post);
  }
  elseif (is_category()) {
      $page_description = category_description();
  }
  elseif ( is_tag() ) {
      $page_description = get_description(current($posts[0]));
  }
  elseif (is_date()) {
      $page_description = get_bloginfo('description');
  }
  elseif (is_search()) {
      if (sizeof($posts) > 0) {
          $page_description = get_description(current($posts[0]));
	}
      else {
          $page_description = get_bloginfo('description');
	}
  } else { /* is_home normalement */
      $page_description = get_bloginfo('description');
  }
  if ($page_description != '') {
      $page_description = htmlspecialchars(stripslashes(strip_tags(str_replace("n", '', $page_description))));
      echo ''."n";
  }
}

Quelques explications:

  • En ligne 5, un seul article est affiché, la variable globale $post est disponible,
  • En lignes 11 et 18, nous avons une liste d’articles à traiter. La variable globale $posts est disponible. Avec la fonction current(), nous récupérons le premier élément (article),
  • Dans les autres cas, nous récupérons la description du blog,
  • Pour l’affichage, nous essayons de filtrer autant que possible, le contenu de la description, pour éviter tout incident pendant l’affichage.

La fonction get_description peut prendre la forme suivante:

 function get_description($current_post) {
$max_length = 200;
$string = '';
// If post has an excerpt?
if ($current_post->post_excerpt != '') {
$string = wp_html_excerpt ( $current_post->post_excerpt, $max_length);
}
else {
// No excerpt, try to find the

Autres articles de cette série

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