Post on 21-Apr-2017
hello!
Je suis Daniel Roch
Consultant en référencement naturel et WordPress
Créateur de l’agence SeoMix et de SEO KEY
Auteur d’Optimiser son référencement WordPress
Conférencier compulsif
Suivez-moi sur @rochdaniel
Un bon référencement
passe par :
✘ Une stratégie de contenus- Des mots clés pertinents
- Des contenus bien rédigés et optimisés (Title, H1, ALT…)
- Une structure optimisée
✘ Un site techniquement propre- Un site responsive et rapide à charger
- Un balisage Hn et Schema.org optimisé
- Un robots.txt, des balises canoniques et un sitemap.xml
✘ Des liens, des liens et des liens…
Les outils :
✘ Search Console de Google=> Contrôlez chaque menu
✘ Les logiciels de crawl : Xenu, Integrity ou Screaming Frog=> Regarder ce que génère WordPress
✘ Les logs=> Regardez où Google Bot se rend
✘ Site:monsite.fr=> Vérifiez ce que Google indexe réellement
C’est quoi ?
✘ Pourquoi en faire ?=> Proposer une meilleure navigation=> Augmenter le taux de conversion
✘ Les avantages en SEO=> Réduire le nombre de sous-catégories pauvres en contenus
=> Avoir plus de contenus uniques sur les catégories principales
Les solutions :
✘ Passer par un thème qui l’intègre
✘ Passer par une extension => Par exemple FacetWP pour WooCommerce
=> TOUJOURS contrôler !
Les solutions :
✘ Développer cela soi-même !=> Chaque filtre n’est PAS un lien <a href>=> Chaque filtre déclenche une requête AJAX (admin-ajax ou admin-post) via du JS=> On utilise les filtres pour les besoins précis, sinon c’est une sous-catégorie=> l’URL ne change pas
Les solutions :
Si l’URL change quand même (personne ne m’écoute de toute façon…)=> L’URL avec filtre est en noindex=> Il y a une canonical vers l’URL sans filtre=> On ne fait surtout AUCUN lien vers ces URL avec filtres=> Les boutons de partage prennent l’URL sans filtre=> les bloquer par robots.txt (Disallow:)=> Paramétrer les « paramètres d’URL » dans la Search Console
Les problématiques
✘ 2nd problème : les contenus privés
=> Les extensions e-commerce vont créer des pages privées (Commande payée, mon compte, choix du mode de livraison…)
=> De base, elles vont apparaître - dans le plan du site ;- dans le sitemap ;- dans certains widgets et menus.
Les problématiques
✘ 2nd problème : les contenus privés
=> Il faut donc exclure les contenus privés- noindex sur ces pages- les bloquer par robots.txt- ne pas faire de liens vers elles- les exclure du plan de site- les exclure du fichier sitemap
Les problématiques
✘ 3ème problème : la structure du site
✘ La partie blog est séparée de la partie e-commerce. Cela casse la structure en silos :
Les problématiques
✘ 3ème problème : la structure du site
- Etendre les catégories de produits aux autres types de contenus
add_action( 'init','seomix_product_taxonomy_add_advices' );
function seomix_product_taxonomy_add_advices(){
// add product taxonomy to post
register_taxonomy_for_object_type('product_cat', 'post');
}
Les problématiques
✘ 3ème problème : la structure du site
Ensuite, créer une nouvelleboucle dansle template
Les problématiques
✘ 3ème problème : la structure du site
- Et ensuite ajouter les « produits » aux articles relatifs. Pour l’extension YARPP, il faut ajouter cette ligne dans la déclaration du Post Type Produit :
yarpp_support => 'true'
Pourquoi en faire un ?
✘ C’est tendance
✘ La navigation est plus fluide
✘ Cela donne une sensation de modernité
Les risques SEO
✘ Google veut :
un mot clé = un contenu = une URL unique
✘ Un site OnePage = tout est mélangé
Comment faire ?
✘ Etapes :=> Concevoir le site normalement, SANS AJAX=> Rajouter de l’AJAX pour injecter le contenu dans la
page actuellement consultée
✘ Testez !=> Avec un crawl=> en désactivant le JS de votre navigateur
Comment faire ?
✘ Ne pas faire n’importe quoi :=> Les requêtes AJAX se font en JS avec admin-ajax
(éventuellement avec admin-post)=> Le site doit toujours fonctionner sans ce JS=> On essaye de mettre en cache les requêtes
$nomtransient = get_transient ( 'seomix_transient_nomurl' );
if ( false === ( $rendu = $nomtransient ) ) {
// mon code
set_transient ( $nomtransient, 'contenu_transient‘ )
}
Comment faire ?
✘ Ne pas faire n’importe quoi :=> On FORCE le changement d’URL
=> On n’oublie pas Analytics
success : function( data ) {
history.pushState(data, data.title, data.link);
}
success : function( data ) {
// L’insertion pour Google Analytics :
ga('send', 'pageview', window.location.pathname);
}
Comment faire ?
✘ Ne pas faire n’importe quoi :
=> On rend compatible avec les boutons « suiv – prec »du navigateur
window.addEventListener( 'popstate', function(e) {
e.preventDefault();
var url = window.location.href;
$.ajax({
// Mettez ici les arguments nécessaires pour récupérer le
contenu de la précédente page
})
} );
Les bases du SEO
multilingue
✘ Il faut une action manuelle de traduction✘ Il faut penser à la culture du pays ciblé✘ Il faut pour chaque langue un effort supplémentaire
pour :=> rédiger des contenus=> créer encore plus de liens=> fidéliser les clients et créer une communauté
Les bases du SEO
multilingue
✘ Il faut une thème traduisible : __( et _e(
✘ Il faut une extension pour gérer les traductions :
=> PolyLang
=> WPML…
Les bases du SEO
multilingue
✘ Il faut idéalement :=> Un Top Level Domain par langue (.fr, .de, .es, Etc.)=> Sinon un sous domaine par langue=> en dernier recours un répertoire=> JAMAIS avec un paramètre ?
Sur WordPress
✘ Vérifiez manuellement les traductions
✘ Inscrivez chaque domaine dans la Search Console
✘ Créez des liens vers chaque langue, dans la bonne langue
✘ Vérifiez la présence du balisage hreflang
✘ L’atout est de pouvoir fidéliser l’internaute
✘ Le risque constant :=> la sécurité=> le respect de la loi
✘ Deux cas de figure en SEO:=> La communauté est privée, aucun souci=> La communauté est publique
Les communautés
✘ Que faut-il faire ?=> noindex + canonical sur les types de contenus inutiles=> former les utilisateurs=> ne JAMAIS faire de liens vers les contenus inutiles dans les templates=> vérifier le sitemap et la page plan du site=> optimiser manuellement le contenu=> réduire la pagination
Les communautés