J’aime suivre d’assez près tout ce qui touche à l’inclusion de “rich snippets” sur les sites afin qu’ils puissent être plus compréhensible par les moteurs de recherche et apporter de nouvelles fonctionnalités. C’est ce que j’ai fait avec mes extensions Rich Contact Widget et Google Knowledge Phone Number, et j’ai découvert récemment une nouvelle possibilité offerte par Google : l‘affichage d’un formulaire de recherche pour votre site directement dans les résultats.

Une précision importante pour commencer : Le formulaire de recherche ne s’affiche que lors d’une recherche du type “nom de marque” ou “URL du site” (exemple youtube ou youtube.com), et dans la section “liens de site” (les liens qui s’affichent sous le résultat principal). Les algorithmes de Google décident d’afficher ou nom la recherche en fonction de nombreux critères, comme toujours, donc rien ne garanti que ça fonctionnera pour votre site.

Exemple donné par Google

Si malgré tout vous souhaitez mettre toutes les chances de votre côté, et que la fonction de recherche tient une place centrale dans l’utilisation de votre site WordPress, je vais vous indiquer 3 méthodes qui peuvent vous permettre d’ajouter le balise nécessaire à Google pour pouvoir l’exploiter.

Méthode via le plugin WordPress SEO

(mise à jour du 09/09/2014)

La célèbre extension WordPress SEO by Yoast a ajouté dans sa version 1.6 le support de cette fonctionnalité, donc si vous l’utilisez, vous avez juste à la mettre à jour et il s’en occupe automatiquement.

Méthode de l’ajout de code JSON+LD

C’est la méthode recommandée par Google. Elle consiste à ajouter un bout de code dans le pied de page de la page d’accueil, au format JSON+LD, qui sera lisible par les robots. Il est très simple d’ajouter cela dans WordPress. Idéalement, vous ajouterez le code ci-dessous dans un plugin, afin de le conserver si jamais vous changez de thème.

<?php
    add_action( 'wp_footer', 'rp_add_google_search_markup' );
    function rp_add_google_search_markup() {
        if ( is_front_page() ) {
        ?>
            <script type="application/ld+json">
            {
                "@context": "http://schema.org",
                "@type": "WebSite",
                "url": "<?php echo esc_url( home_url( '/' ) ); ?>",
                "potentialAction": {
                    "@type": "SearchAction",
                    "target": "<?php echo esc_url( home_url( '/' ) ); ?>?s={s}",
                    "query-input": "name=s"
                }
            }
            </script>
<?php
        }
    }
?>

Méthode du balisage microdata

Si vous préférez, il est possible de baliser votre formulaire de recherche directement. Il est préférable que celui-ci soit accessible depuis la page d’accueil de votre site. Normalement, vous devriez trouver dans le dossier de votre thème un fichier appelé “searchform.php” qui contient le code correspondant au formulaire de recherche. Il sera nécessaire de le modifier de cette façon :

<div itemscope itemtype="http://schema.org/WebSite">
    <meta itemprop="url" content="<?php esc_url( echo home_url( '/' ) ); ?>"/>
    <form itemprop="potentialAction" itemscope itemtype="http://schema.org/SearchAction" role="search" method="get" id="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>">
        <div>
            <label class="visually-hidden" for="s"><?php _e( 'Search for:', 'themeslug' ); ?></label>
            <meta itemprop="target" content="<?php esc_url( echo home_url( '/' ) ); ?>?s={s}"/>
            <input itemprop="s" type="search" value="<?php the_search_query(); ?>" name="s" id="s" class="searchfield" placeholder="<?php _e( 'Input search terms', 'themeslug'); ?>" />
            <input type="submit" id="searchsubmit" class="searchsubmit" value="<?php _e( 'Search' ); ?>" />
        </div>
    </form>
</div>

Pour en savoir plus

Vous pouvez consulter la page dédiée chez Google à propos de cette fonctionnalité (en anglais) : https://developers.google.com/webmasters/richsnippets/sitelinkssearch

Rejoindre la conversation

4 commentaires

  1. Coucou,
    Merci d’explorer ce terrain. En effet cette thématique est intéressante et souvent méconnue (je m’inclue dans ceux qui la méconnaissent).

    En revanche niveau code j’aurais ajouté un esc_url() tout de même pour le sanitize. C’est important de ne pas passer à côté à mon sens.

  2. Tu as raison de le souligner et de rappeler son importance, je l’ai ajouté.

    Je n’ai pas l’habitude d’utiliser les fonctions de ce type sur les fonctions internes de WordPress, mais sait-on jamais.

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.