Accueil » Conseils & tutoriels sites internet » Tutoriels Wordpress » WordPress : ajoutez votre site à Google actualités

WordPress : ajoutez votre site à Google actualités

Google News, ou autrement dit Google Actualités, demande des informations en référencement spécifiques, ce afin de ressortir correctement et de manière efficace. Comme chacun le sait, les meta_description et meta_title sont plus que requis, tandis que plus personne n’utilise les meta_keywords, obsolètes depuis de nombreuses années.

Je vous recommanderai bien de respecter du Do It Yourself, c’est très enrichissant, mais le plugin WordPress Google News est disponible gratuitement en cliquant ici !

Un site WordPress étant une base de blog, il est tout-à-fait possible de créer tous les éléments requis pour sortir en tant que journal d’actualités, selon le type de contenu utilisé. Il va nous falloir pour cela deux types d’informations : le sitemap Google News et les meta associées, que l’on appelle news_keywords.

Le sommaire Google News de Cyssoo

Il existe quelques plugins, peu efficaces et pas à jour généralement, permettant de générer des sitemaps pour Google News, mais sur un principe de « do it yourself », nous allons voir comment générer ce type de fichiers sur votre WordPress, directement dans votre thème.

Il est cependant très utile de lire la documentation au préalable, de manière à déjà bien comprendre que Google Actualités demande que seuls les articles de deux jours maximum doivent être indiqués sur le sitemap. A l’heure actuelle, Google n’est pas très regardant là-dessus, mais nous nous doutons tous que cela ne durera pas.

Ajouter son site WordPress à Google News, alias Google Actualités

Commençons par la news_keywords, la première à mettre en place. Comme j’imagine que les tags sont justement choisis et correspondent à des critères précis, utilisons-les de manière à ne pas surcharger une base de données qui nativement a tendance à être conséquente. Servons-nous des tags que vous mettez en place sur vos articles, qu’ils soient affichés ou non.

1/ Code d’ajout des meta news_keywords selon les tags utilisés

Edit du 20/02/2018 : Google News ne tient plus compte des meta news_keywords, lire ici l’article de WebRankInfo

Dans votre thème, ou votre thème enfant, insérez ceci :

/**
 * Meta News Keywords
 * @see https://support.google.com/news/publisher/answer/68297?hl=fr
 */
function meta_news_keywords($post_id){
  if (is_single()) {
    $id = get_the_ID();
    $tagsList = wp_get_post_tags($id);
      foreach ( $tagsList as $tag ) {
          $tag_names[] = $tag->name;
      }
      $metaTags = implode( ', ', (array)$tag_names );
    echo '<meta name="news_keywords" content="'.$metaTags.'">';
  }
}
add_action('wp_head', 'meta_news_keywords');

Dans le commentaire au-dessus de la fonction, vous trouverez le lien vers la documentation Google concernant les sitemaps Google News. Il vous suffit de simplement mettre des tags à vos posts pour obtenir la meta nécessaire au bon référencement de vos articles. Mais cela ne suffit toujours pas.

2/ Code de génération de fichier XML

Il s’agit par conséquent de générer un sitemap, à soumettre à Google en passant par Webmaster Tools. Notez au passage que vous pouvez avoir deux types de sitemaps : un pour le référencement de votre site, l’autre pour Google Actualités.

Demandez à votre hébergeur si vous possédez des droits en écriture à la racine de votre hébergement, sans quoi vous aurez soit une page blanche, soit une erreur parlant justement de droits d’écriture.

Le code va récupérer de nombreuses informations sur vos articles, et les insèrera naturellement dans un fichier XML nommé newssitemap.xml, que vous pourrez retrouver à l’URL http://www.nomdevotresite.tld/newssitemap.xml. Le nom du fichier XML permet par conséquent de bien discerner le type de sitemap et d’éviter des conflits avec tout éventuel plugin déjà en place (et qui généralement créent des sitemaps nommés sitemap.xml).

/**
 * Google News Sitemap
 * @link https://wordpress.stackexchange.com/questions/15218/how-to-generate-update-a-xml-sitemap-without-plugins
 * @see https://support.google.com/news/publisher/answer/74288?hl=fr
 * @todo delete posts in xml if they are too old (post date more tha two days)
 */ 
add_action( "save_post", "eg_create_sitemap" );   
function eg_create_sitemap() {

  //Get blog useful infos
  $site_title = get_bloginfo( 'name' );
  $site_language = get_bloginfo( 'language' );

  //Now let's get posts
  $postsForSitemap = get_posts( array(
      'numberposts' => -1,
      'orderby'     => 'date',
      'post_type'   => array( 'post'),
      'order'       => 'DESC',
      'date_query' => array(
                           array(
              'after'     => '2 days ago',
              'inclusive' => true,
             ),
           ),
  ) );

  //Start sitemap
  $sitemap = '<?xml version="1.0" encoding="UTF-8"?>';
  $sitemap .= "\n" . '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">' . "\n";    
  
  foreach( $postsForSitemap as $post ) {
      //Get post tags for keywords
      // $tag_names = wp_get_post_tags( $post->ID, array( 'fields' => 'name' ) );
      $tag_names = get_the_tag_list('',', ','');
      $date_post = date('Y-m-d', $post->post_date);

      //Now we have all required datas, let's write in XML
      setup_postdata( $post ); 
      $sitemap .= "\t" . '<url>' . "\n" .
          "\t\t" . '<loc>' . get_permalink( $post->ID ) . '</loc>' .
          "\n\t\t" . '<news:news>' .
          "\n\t\t\t" . '<news:publication>' .
          "\n\t\t\t\t" . '<news:name>'.$site_title.'</news:name>' .
          "\n\t\t\t\t" . '<news:language>'.$site_language.'</news:language>' .
          "\n\t\t\t" . '</news:publication>' .
          "\n\t\t\t" . '<news:genres>Blog</news:genres>' .
          "\n\t\t\t" . '<news:publication_date>'.$date_post.'</news:publication_date>' .
          "\n\t\t\t" . '<news:title>'.$post->post_title.'</news:title>' .
          "\n\t\t\t" . '<news:keywords>'.strip_tags($tag_names, ',').'</news:keywords>' .
          "\n\t\t" . '</news:news>' .
          "\n\t" . '</url>' . "\n";
  }
  $sitemap .= '</urlset>';
  $news_sitemap = ABSPATH .'newssitemap.xml';
  if (file_exists($news_sitemap)) {
    unlink($news_sitemap);
  } 
  $fp = fopen( ABSPATH . "newssitemap.xml", 'w' );
  fwrite( $fp, $sitemap );
  fclose( $fp );
}

Le code mettra à jour le sitemap automatiquement à chaque fois que vous cliquerez sur le bouton de mise à jour ou de publication d’un article de votre blog.

Insérez donc ce code sur votre blog, et testez à l’enregistrement ou la mise à jour d’un article, afin de déterminer si votre hébergement est adapté à ce type de fonctions.

Enfin, et pour terminer, demandez à Google News de traiter votre sitemap en déclarant votre blog comme un blog d’actualités via ce lien :

https://partnerdash.google.com/partnerdash/d/news#p:id=pfehome

Chez nos amis et clients, le résultat est parfait ! 

Imprimer Imprimer
Suivre Cyssoo:

Développeur - formateur

Je cherche à display errors le monde, vous auriez pas la doc' ? Follow me on Twitter !

2 Responses

  1. Franck Rossignol
    | Répondre

    Bonjour, J’utilise votre plugin, il crée bien le sitemap mais pour la date il indique la date avec l’heure et Google ne veut que la Date dans Search Console

    • Cyril CHALAMON
      | Répondre

      Bonjour,
      Le plugin et l’article ont été mis à jour de manière à ce que la date de publication indiquée dans le XML soit correctement formatée.
      Merci pour le signalement !

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.