SlideShare une entreprise Scribd logo
Mieux Filtrer vos listes avec AJAX
***
Trucs et conseils pour mieux filtrer
vos listes WordPress via AJAX
Symetris libère votre potentiel web.
***
• Fondée à Montréal en 2004
• 9 spécialistes web à l’interne
• Développement de sites web qui vont
au-delà du marketing
• Maîtrise des CMS open-source
• Optimisation pour les appareils mobiles
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Qui sommes-nous?
Brad Muncs
Président Symetris
12 ans d’expérience
dans le web
Je mange du web
matin, midi et soir
Matthieu Gadrat
Développeur PHP et Lead
technologique
4 ans d’expérience avec
des CMS open-source
Amateur de ski
Ordre du jour
1. Les listes dans WordPress
2. Améliorer les filtres avec AJAX
3. Jetons un coup d’oeil au code
4. Conclusion
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
- 1 -
Pourquoi WordPress est
un outil de choix
pour nos clients?
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
WordPress est plus qu’un blogue
• CMS complet
• Différent type de contenu (Post types)
• Catégorisation facile à utiliser
• WordPress est bon pour générer des listes
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Mr. Wilkins
Mr Wilkins est un distributeur de
nourriture pour chien
• Entreprise de taille moyenne
• Distribue à des détaillants (B2B)
• A besoin d'un catalogue en ligne
pour présenter ses produits
Prenons comme exemple d’entreprise :
• WordPress est
donc l'outil parfait
pour un catalogue
• Parfait pour
Mr Wilkins
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Dans WordPress, les listes sont déjà
présentes
• Liste de post
• Archives
• Catégories
• Tags
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Filtrage traditionnel dans WordPress
• Via les URL
• Par catégorie ou tag
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Bénéfices
• Ça fonctionne «Out of the box »
• Intuitif
• Pas de code
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Obstacles pour les utilisateurs
• Plus il y a de données, plus c’est laborieux
• Pas de «Custom fields»
• Pas de filtre complémentaire (Faceted search)
• Visuellement décevant
• La page doit être rafraichie à chaque nouvelle
requête
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
• Contiennent
beaucoup de
données
• Incluent des
spécifications
(Custom Fields)
• Doivent être efficaces
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Les listes de produit de Mr Wilkins:
Pour atteindre les
objectifs de
Mr. Wilkins, il faut
étendre les
fonctionnalités de filtre
de WordPress
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
- 2 -
Mieux filtrer les listes
de « POST » dans WordPress
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Plugin disponibles
• Faceted Search
• http://wordpress.org/plugins/faceted-search/
• Catégories / Tags
• wp-posts Filter
• http://wordpress.org/plugins/wp-posts-filter/
• Catégories / Tags
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Plugin disponibles
• ajax posts Filter
• http://wordpress.org/plugins/ajax-post-filter/
• Quicksand jQuery Post filter
• http://wordpress.org/plugins/quicksand-jquery-post-filter/
• Utilise jQuery Quicksand
• Mauvais pour gros volume de données
• ETC…
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Il est possible que l'une de ces solutions,
ou un autre plugin soient suffisants...
... Mr Wilkins, lui, n'est pas satisfait
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Nous allons donc lui créer une
solution personnalisée en utilisant
AJAX avec WordPress
(et WP_Query)
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
WP_Query est un objet à l’origine de la création des
listes dans WordPress
En fait, c’est le dénominateur commun de toute les requêtes.
• WP_Query est roi
• WP_Query est puissant
• WP_Query est flexible
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Qu'est-ce qu'AJAX?
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Définition
• Asynchronous JavaScript And XML
• Échange de donnée XML et Javascript de manière
asynchrone lors de la navigation d'un utilisateur sur
une même page web.
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Avantages
• Performant pour l'affichage d'un grand nombre de données
(en petites doses)
• Feedback constant à l'utilisateur
• Permet des effets Javascript « Fancy »
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Inconvénients
• Attention à l'accessibilité
• Si le JavaScript est désactivé, ça ne marchera simplement
pas
• Effort supplémentaire pour le SEO
Mais nous pouvons les surmonter
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Bénéfices de faire un module personnalisé
• Utiliser WP_Query
• Fonctionne avec tous les types de données
ainsi que tous les champs
• « Fancy » Javascript
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Mr. Wilkins a hâte de commencer!
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
- 3 -
Jetons un coup d'oeil au code
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Dans WordPress, il y a déjà un mécanisme pour traiter
les requêtes en AJAX
pour la section « admin »
• /wp-admin/admin-ajax.php
• /wp-admin/admin-ajax.php?action=mon_callback
• Toutes requête à ce fichier seront envoyées à la fonction
appelé dans l'argument "action"
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Créons un simple plugin
• Post type
• Taxonomie
• Un Widget (affiche le filtre et le contenu)
• Javascript
• AJAX Callback
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Détail des filtres
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Détail du contenu WP_Query et sa« Loop »
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Le Javascript
• N’oubliez pas d’inclure le JavaScript
• Sur le premier chargement de la page:
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Écouter les changements du formulaire et
faire un « POST »
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
JSON
JSON (JavaScript Object Notation) est un format de données
textuelles, générique,[...]Il permet de représenter de l’information
structurée. (Wikipédia)
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Réponse à la requête d’AJAX:
Traitement de la réponse
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Dernière étape: Le « Callback »
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Envoyer la réponse JSON
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Démo fonctionnelle
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Les « Mais »
• Beaucoup de données, utiliser un « Pager » ou un
« infinite scroll » (comme Facebook)
• Pas de Javascript?
• Afficher le bouton «Submit» du formulaire et s'assurer
que le « Widget » prenne en compte les requêtes
POST
• Référencement (SEO)
• XML Sitemap très important pour compenser
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
- 4 -
Conclusion
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Bénéfices pour le client
• Les clients de Mr. Wilkins trouvent
rapidement ce dont ils ont besoin.
• Le site de Mr Wilkins est plus
attrayant que celui de ses
compétiteurs.
• Mr Wilkins peut utiliser le CMS pour
augmenter son volume de contenu
tout en gardant un site performant.
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Bénéfices pour le développeur
• Il n'a pas eu à se battre avec un plugin pour la présentation
des produits
• Facilité d’ajouter des champs et/ou filtres
• Il a pu utiliser le merveilleux et plein de ressource WP_Query.
• Son code est facilement réutilisable pour son prochain projet
peut importe les post types ou taxonomie
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Cette technique n'est pas juste valable
pour les « Posts »
• Users
• Catégories
• Commentaires
Et permet un filtrage avancé
• Sélectionner le nombre d’items par page
• Filtrer sur la langue
• Filtrer sur des plages de données (« range »)
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Bref, que retenir ?
Pas la peine d’utiliser un plugin existant
pour filtrer des listes.
Avec WP_Query et AJAX, vous bénéficiez
d’un contrôle supérieur sur vos listes de données
sans pour autant alourdir votre travail.
Briser la glace WordPress
Filtrer avec
AJAX
Détail du
Code
Conclusion
Merci !
Des questions
Contactez-nous :
info@symetris.ca
brad@symetris.ca / matthieu@symetris.ca
Présentation PPT disponible sur Slideshare
Code on Github (https://github.com/symetris/wordcamp2013)

Contenu connexe

Tendances

Istqb 1-소프트웨어테스팅기초
Istqb 1-소프트웨어테스팅기초Istqb 1-소프트웨어테스팅기초
Istqb 1-소프트웨어테스팅기초
Jongwon Lee
 
Saving Time By Testing With Jest
Saving Time By Testing With JestSaving Time By Testing With Jest
Saving Time By Testing With Jest
Ben McCormick
 
What is eggPlant Functional?
What is eggPlant Functional?What is eggPlant Functional?
What is eggPlant Functional?
Testplant
 
도메인 주도 설계 - 6장 도메인 객체의 생명주기
도메인 주도 설계 - 6장 도메인 객체의 생명주기도메인 주도 설계 - 6장 도메인 객체의 생명주기
도메인 주도 설계 - 6장 도메인 객체의 생명주기
JangHyuk You
 
Selenium web driver
Selenium web driverSelenium web driver
Selenium web driver
Sun Technlogies
 
Bdd and spec flow
Bdd and spec flowBdd and spec flow
Bdd and spec flow
Charles Nurse
 
How to Build Your Own Test Automation Framework?
How to Build Your Own Test Automation Framework?How to Build Your Own Test Automation Framework?
How to Build Your Own Test Automation Framework?
Dmitry Buzdin
 
Selenium
SeleniumSelenium
Selenium
Ruturaj Doshi
 
So you think you can write a test case
So you think you can write a test caseSo you think you can write a test case
So you think you can write a test case
Srilu Balla
 
Easy Java Integration Testing with Testcontainers​
Easy Java Integration Testing with Testcontainers​Easy Java Integration Testing with Testcontainers​
Easy Java Integration Testing with Testcontainers​
Payara
 
Fastlane
FastlaneFastlane
Fastlane
Warren Lin
 
Unit testing with JUnit
Unit testing with JUnitUnit testing with JUnit
Unit testing with JUnit
Pokpitch Patcharadamrongkul
 
Unit Testing Concepts and Best Practices
Unit Testing Concepts and Best PracticesUnit Testing Concepts and Best Practices
Unit Testing Concepts and Best Practices
Derek Smith
 
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
SangIn Choung
 
Unit Testing with Jest
Unit Testing with JestUnit Testing with Jest
Unit Testing with Jest
Maayan Glikser
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
Martin Málek
 
Unit Testing And Mocking
Unit Testing And MockingUnit Testing And Mocking
Unit Testing And Mocking
Joe Wilson
 
Data driven Automation Framework with Selenium
Data driven Automation Framework with Selenium Data driven Automation Framework with Selenium
Data driven Automation Framework with Selenium
Edureka!
 
Bdd Introduction
Bdd IntroductionBdd Introduction
Bdd Introduction
Skills Matter
 
Software Testing Life Cycle
Software Testing Life CycleSoftware Testing Life Cycle
Software Testing Life Cycle
gueste730d5
 

Tendances (20)

Istqb 1-소프트웨어테스팅기초
Istqb 1-소프트웨어테스팅기초Istqb 1-소프트웨어테스팅기초
Istqb 1-소프트웨어테스팅기초
 
Saving Time By Testing With Jest
Saving Time By Testing With JestSaving Time By Testing With Jest
Saving Time By Testing With Jest
 
What is eggPlant Functional?
What is eggPlant Functional?What is eggPlant Functional?
What is eggPlant Functional?
 
도메인 주도 설계 - 6장 도메인 객체의 생명주기
도메인 주도 설계 - 6장 도메인 객체의 생명주기도메인 주도 설계 - 6장 도메인 객체의 생명주기
도메인 주도 설계 - 6장 도메인 객체의 생명주기
 
Selenium web driver
Selenium web driverSelenium web driver
Selenium web driver
 
Bdd and spec flow
Bdd and spec flowBdd and spec flow
Bdd and spec flow
 
How to Build Your Own Test Automation Framework?
How to Build Your Own Test Automation Framework?How to Build Your Own Test Automation Framework?
How to Build Your Own Test Automation Framework?
 
Selenium
SeleniumSelenium
Selenium
 
So you think you can write a test case
So you think you can write a test caseSo you think you can write a test case
So you think you can write a test case
 
Easy Java Integration Testing with Testcontainers​
Easy Java Integration Testing with Testcontainers​Easy Java Integration Testing with Testcontainers​
Easy Java Integration Testing with Testcontainers​
 
Fastlane
FastlaneFastlane
Fastlane
 
Unit testing with JUnit
Unit testing with JUnitUnit testing with JUnit
Unit testing with JUnit
 
Unit Testing Concepts and Best Practices
Unit Testing Concepts and Best PracticesUnit Testing Concepts and Best Practices
Unit Testing Concepts and Best Practices
 
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
 
Unit Testing with Jest
Unit Testing with JestUnit Testing with Jest
Unit Testing with Jest
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
 
Unit Testing And Mocking
Unit Testing And MockingUnit Testing And Mocking
Unit Testing And Mocking
 
Data driven Automation Framework with Selenium
Data driven Automation Framework with Selenium Data driven Automation Framework with Selenium
Data driven Automation Framework with Selenium
 
Bdd Introduction
Bdd IntroductionBdd Introduction
Bdd Introduction
 
Software Testing Life Cycle
Software Testing Life CycleSoftware Testing Life Cycle
Software Testing Life Cycle
 

Similaire à Mieux Filtrer ses listes WordPress avec Ajax et WP_Query

Atelier WordPress - Freelance fair tour - La cordée Rennes
Atelier WordPress - Freelance fair tour - La cordée RennesAtelier WordPress - Freelance fair tour - La cordée Rennes
Atelier WordPress - Freelance fair tour - La cordée Rennes
wpalex
 
agoraCMS - WordPress, thèmes et plugins : mode d'emploi
agoraCMS - WordPress, thèmes et plugins : mode d'emploiagoraCMS - WordPress, thèmes et plugins : mode d'emploi
agoraCMS - WordPress, thèmes et plugins : mode d'emploiLionel Pointet
 
10 conseils pour booster les performances de votre site sous WordPress
10 conseils pour booster les performances de votre site sous WordPress10 conseils pour booster les performances de votre site sous WordPress
10 conseils pour booster les performances de votre site sous WordPress
Aurélien Denis
 
Présentation welcom la webperf by object23
Présentation welcom la webperf by object23Présentation welcom la webperf by object23
Présentation welcom la webperf by object23
Brigitte Marandon
 
Faites décoller votre site avec Jetpack - WordCamp Montreal 2015
Faites décoller votre site avec Jetpack - WordCamp Montreal 2015Faites décoller votre site avec Jetpack - WordCamp Montreal 2015
Faites décoller votre site avec Jetpack - WordCamp Montreal 2015
Richard Archambault
 
Construisez votre intranet avec microsoft office 365 sans code a os canadia...
Construisez votre intranet avec microsoft office 365 sans code   a os canadia...Construisez votre intranet avec microsoft office 365 sans code   a os canadia...
Construisez votre intranet avec microsoft office 365 sans code a os canadia...
Samuel Lévesque
 
Le meilleur pour votre site WordPress
Le meilleur pour votre site WordPressLe meilleur pour votre site WordPress
Le meilleur pour votre site WordPress
Aurélien Denis
 
Sécuriser un site WordPress - Semaine du web
Sécuriser un site WordPress - Semaine du webSécuriser un site WordPress - Semaine du web
Sécuriser un site WordPress - Semaine du web
Nour El Houda
 
Sécurité WordPress
Sécurité WordPressSécurité WordPress
Sécurité WordPress
Chi Nacim
 
Sécuriser un site WordPress - Semaine du web
Sécuriser un site WordPress - Semaine du webSécuriser un site WordPress - Semaine du web
Sécuriser un site WordPress - Semaine du web
IZZA Samir
 
Sécuriser un site Wordpress
Sécuriser un site WordpressSécuriser un site Wordpress
Sécuriser un site Wordpressbestyuna
 
Un site web en 5 minutes avec le CMS Wordpress- SFD Douala 2014
Un site web en 5 minutes avec le CMS Wordpress-  SFD Douala 2014Un site web en 5 minutes avec le CMS Wordpress-  SFD Douala 2014
Un site web en 5 minutes avec le CMS Wordpress- SFD Douala 2014
Mak YIMEN
 
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
pierredargham
 
Optimiser réellement le référencement naturel de WordPress
Optimiser réellement le référencement naturel de WordPressOptimiser réellement le référencement naturel de WordPress
Optimiser réellement le référencement naturel de WordPress
Daniel Roch - SeoMix
 
WordPress sous stéroïdes : votre site Web vers les sommets !
WordPress sous stéroïdes : votre site Web vers les sommets !WordPress sous stéroïdes : votre site Web vers les sommets !
WordPress sous stéroïdes : votre site Web vers les sommets !
Aurélien Denis
 
Décoller votre site avec Jetpack
Décoller votre site avec JetpackDécoller votre site avec Jetpack
Décoller votre site avec Jetpack
Richard Archambault
 
Wordpress pour les entreprises
Wordpress pour les entreprisesWordpress pour les entreprises
Wordpress pour les entreprises
monsieurpixel
 
Grics 2017 - construisez votre intranet avec microsoft office 365 sans code
Grics   2017 - construisez votre intranet avec microsoft office 365 sans codeGrics   2017 - construisez votre intranet avec microsoft office 365 sans code
Grics 2017 - construisez votre intranet avec microsoft office 365 sans code
Samuel Lévesque
 
Inclure du Javascript de manière performante
Inclure du Javascript de manière performanteInclure du Javascript de manière performante
Inclure du Javascript de manière performante
Jean-Pierre Vincent
 

Similaire à Mieux Filtrer ses listes WordPress avec Ajax et WP_Query (20)

Atelier WordPress - Freelance fair tour - La cordée Rennes
Atelier WordPress - Freelance fair tour - La cordée RennesAtelier WordPress - Freelance fair tour - La cordée Rennes
Atelier WordPress - Freelance fair tour - La cordée Rennes
 
agoraCMS - WordPress, thèmes et plugins : mode d'emploi
agoraCMS - WordPress, thèmes et plugins : mode d'emploiagoraCMS - WordPress, thèmes et plugins : mode d'emploi
agoraCMS - WordPress, thèmes et plugins : mode d'emploi
 
10 conseils pour booster les performances de votre site sous WordPress
10 conseils pour booster les performances de votre site sous WordPress10 conseils pour booster les performances de votre site sous WordPress
10 conseils pour booster les performances de votre site sous WordPress
 
Sécuriser un site Wordpress
Sécuriser un site WordpressSécuriser un site Wordpress
Sécuriser un site Wordpress
 
Présentation welcom la webperf by object23
Présentation welcom la webperf by object23Présentation welcom la webperf by object23
Présentation welcom la webperf by object23
 
Faites décoller votre site avec Jetpack - WordCamp Montreal 2015
Faites décoller votre site avec Jetpack - WordCamp Montreal 2015Faites décoller votre site avec Jetpack - WordCamp Montreal 2015
Faites décoller votre site avec Jetpack - WordCamp Montreal 2015
 
Construisez votre intranet avec microsoft office 365 sans code a os canadia...
Construisez votre intranet avec microsoft office 365 sans code   a os canadia...Construisez votre intranet avec microsoft office 365 sans code   a os canadia...
Construisez votre intranet avec microsoft office 365 sans code a os canadia...
 
Le meilleur pour votre site WordPress
Le meilleur pour votre site WordPressLe meilleur pour votre site WordPress
Le meilleur pour votre site WordPress
 
Sécuriser un site WordPress - Semaine du web
Sécuriser un site WordPress - Semaine du webSécuriser un site WordPress - Semaine du web
Sécuriser un site WordPress - Semaine du web
 
Sécurité WordPress
Sécurité WordPressSécurité WordPress
Sécurité WordPress
 
Sécuriser un site WordPress - Semaine du web
Sécuriser un site WordPress - Semaine du webSécuriser un site WordPress - Semaine du web
Sécuriser un site WordPress - Semaine du web
 
Sécuriser un site Wordpress
Sécuriser un site WordpressSécuriser un site Wordpress
Sécuriser un site Wordpress
 
Un site web en 5 minutes avec le CMS Wordpress- SFD Douala 2014
Un site web en 5 minutes avec le CMS Wordpress-  SFD Douala 2014Un site web en 5 minutes avec le CMS Wordpress-  SFD Douala 2014
Un site web en 5 minutes avec le CMS Wordpress- SFD Douala 2014
 
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
Pensez Web-Performances avec WordPress - Une conférence de Julien Oger et Pie...
 
Optimiser réellement le référencement naturel de WordPress
Optimiser réellement le référencement naturel de WordPressOptimiser réellement le référencement naturel de WordPress
Optimiser réellement le référencement naturel de WordPress
 
WordPress sous stéroïdes : votre site Web vers les sommets !
WordPress sous stéroïdes : votre site Web vers les sommets !WordPress sous stéroïdes : votre site Web vers les sommets !
WordPress sous stéroïdes : votre site Web vers les sommets !
 
Décoller votre site avec Jetpack
Décoller votre site avec JetpackDécoller votre site avec Jetpack
Décoller votre site avec Jetpack
 
Wordpress pour les entreprises
Wordpress pour les entreprisesWordpress pour les entreprises
Wordpress pour les entreprises
 
Grics 2017 - construisez votre intranet avec microsoft office 365 sans code
Grics   2017 - construisez votre intranet avec microsoft office 365 sans codeGrics   2017 - construisez votre intranet avec microsoft office 365 sans code
Grics 2017 - construisez votre intranet avec microsoft office 365 sans code
 
Inclure du Javascript de manière performante
Inclure du Javascript de manière performanteInclure du Javascript de manière performante
Inclure du Javascript de manière performante
 

Plus de Symetris

Hyperpersonnalisation des sites web et écosystèmes numériques - Les best prac...
Hyperpersonnalisation des sites web et écosystèmes numériques - Les best prac...Hyperpersonnalisation des sites web et écosystèmes numériques - Les best prac...
Hyperpersonnalisation des sites web et écosystèmes numériques - Les best prac...
Symetris
 
Écrire de la documentation persistante pour un projet Drupal
Écrire de la documentation persistante pour un projet DrupalÉcrire de la documentation persistante pour un projet Drupal
Écrire de la documentation persistante pour un projet Drupal
Symetris
 
How to maintain, evolve and maximize the return on your Drupal website invest...
How to maintain, evolve and maximize the return on your Drupal website invest...How to maintain, evolve and maximize the return on your Drupal website invest...
How to maintain, evolve and maximize the return on your Drupal website invest...
Symetris
 
Should you upgrade your Drupal 7 website or migrate to Drupal 8?
Should you upgrade  your Drupal 7 website or  migrate to Drupal 8? Should you upgrade  your Drupal 7 website or  migrate to Drupal 8?
Should you upgrade your Drupal 7 website or migrate to Drupal 8?
Symetris
 
Different approaches for different scopes: How to tackle a medium-sized Dr...
Different approaches for different scopes: How to tackle a medium-sized Dr...Different approaches for different scopes: How to tackle a medium-sized Dr...
Different approaches for different scopes: How to tackle a medium-sized Dr...
Symetris
 
Trop gros pour des mercenaires, trop petit pour une armée: Comment s'attaquer...
Trop gros pour des mercenaires, trop petit pour une armée: Comment s'attaquer...Trop gros pour des mercenaires, trop petit pour une armée: Comment s'attaquer...
Trop gros pour des mercenaires, trop petit pour une armée: Comment s'attaquer...
Symetris
 
Symetris présente Drupal 8 - Linux-Meetup (Montreal) 02/02/2016
Symetris présente Drupal 8 - Linux-Meetup (Montreal) 02/02/2016Symetris présente Drupal 8 - Linux-Meetup (Montreal) 02/02/2016
Symetris présente Drupal 8 - Linux-Meetup (Montreal) 02/02/2016
Symetris
 
Les particularités de Drupal en gestion de projet: une histoire d’amour et de...
Les particularités de Drupal en gestion de projet: une histoire d’amour et de...Les particularités de Drupal en gestion de projet: une histoire d’amour et de...
Les particularités de Drupal en gestion de projet: une histoire d’amour et de...
Symetris
 
Personnaliser l'interface administrateur de Drupal - DrupalCamp Montreal 2014
Personnaliser l'interface administrateur de Drupal - DrupalCamp Montreal 2014Personnaliser l'interface administrateur de Drupal - DrupalCamp Montreal 2014
Personnaliser l'interface administrateur de Drupal - DrupalCamp Montreal 2014
Symetris
 
Symetris ambiance
Symetris ambianceSymetris ambiance
Symetris ambiance
Symetris
 
WTF: Where To Focus when you take over a Drupal project
WTF: Where To Focus when you take over a Drupal projectWTF: Where To Focus when you take over a Drupal project
WTF: Where To Focus when you take over a Drupal project
Symetris
 
Présentation Symetris - Drupalcamp Montreal 2013 le diable est dans les détails
Présentation Symetris - Drupalcamp Montreal 2013 le diable est dans les détailsPrésentation Symetris - Drupalcamp Montreal 2013 le diable est dans les détails
Présentation Symetris - Drupalcamp Montreal 2013 le diable est dans les détails
Symetris
 
Générer plus de revenus par le web: Pouvez-vous faire mieux ?
Générer plus de revenus par le web: Pouvez-vous faire mieux ?Générer plus de revenus par le web: Pouvez-vous faire mieux ?
Générer plus de revenus par le web: Pouvez-vous faire mieux ?
Symetris
 
Connecter Drupal à des API externes
Connecter Drupal à des API externesConnecter Drupal à des API externes
Connecter Drupal à des API externesSymetris
 

Plus de Symetris (14)

Hyperpersonnalisation des sites web et écosystèmes numériques - Les best prac...
Hyperpersonnalisation des sites web et écosystèmes numériques - Les best prac...Hyperpersonnalisation des sites web et écosystèmes numériques - Les best prac...
Hyperpersonnalisation des sites web et écosystèmes numériques - Les best prac...
 
Écrire de la documentation persistante pour un projet Drupal
Écrire de la documentation persistante pour un projet DrupalÉcrire de la documentation persistante pour un projet Drupal
Écrire de la documentation persistante pour un projet Drupal
 
How to maintain, evolve and maximize the return on your Drupal website invest...
How to maintain, evolve and maximize the return on your Drupal website invest...How to maintain, evolve and maximize the return on your Drupal website invest...
How to maintain, evolve and maximize the return on your Drupal website invest...
 
Should you upgrade your Drupal 7 website or migrate to Drupal 8?
Should you upgrade  your Drupal 7 website or  migrate to Drupal 8? Should you upgrade  your Drupal 7 website or  migrate to Drupal 8?
Should you upgrade your Drupal 7 website or migrate to Drupal 8?
 
Different approaches for different scopes: How to tackle a medium-sized Dr...
Different approaches for different scopes: How to tackle a medium-sized Dr...Different approaches for different scopes: How to tackle a medium-sized Dr...
Different approaches for different scopes: How to tackle a medium-sized Dr...
 
Trop gros pour des mercenaires, trop petit pour une armée: Comment s'attaquer...
Trop gros pour des mercenaires, trop petit pour une armée: Comment s'attaquer...Trop gros pour des mercenaires, trop petit pour une armée: Comment s'attaquer...
Trop gros pour des mercenaires, trop petit pour une armée: Comment s'attaquer...
 
Symetris présente Drupal 8 - Linux-Meetup (Montreal) 02/02/2016
Symetris présente Drupal 8 - Linux-Meetup (Montreal) 02/02/2016Symetris présente Drupal 8 - Linux-Meetup (Montreal) 02/02/2016
Symetris présente Drupal 8 - Linux-Meetup (Montreal) 02/02/2016
 
Les particularités de Drupal en gestion de projet: une histoire d’amour et de...
Les particularités de Drupal en gestion de projet: une histoire d’amour et de...Les particularités de Drupal en gestion de projet: une histoire d’amour et de...
Les particularités de Drupal en gestion de projet: une histoire d’amour et de...
 
Personnaliser l'interface administrateur de Drupal - DrupalCamp Montreal 2014
Personnaliser l'interface administrateur de Drupal - DrupalCamp Montreal 2014Personnaliser l'interface administrateur de Drupal - DrupalCamp Montreal 2014
Personnaliser l'interface administrateur de Drupal - DrupalCamp Montreal 2014
 
Symetris ambiance
Symetris ambianceSymetris ambiance
Symetris ambiance
 
WTF: Where To Focus when you take over a Drupal project
WTF: Where To Focus when you take over a Drupal projectWTF: Where To Focus when you take over a Drupal project
WTF: Where To Focus when you take over a Drupal project
 
Présentation Symetris - Drupalcamp Montreal 2013 le diable est dans les détails
Présentation Symetris - Drupalcamp Montreal 2013 le diable est dans les détailsPrésentation Symetris - Drupalcamp Montreal 2013 le diable est dans les détails
Présentation Symetris - Drupalcamp Montreal 2013 le diable est dans les détails
 
Générer plus de revenus par le web: Pouvez-vous faire mieux ?
Générer plus de revenus par le web: Pouvez-vous faire mieux ?Générer plus de revenus par le web: Pouvez-vous faire mieux ?
Générer plus de revenus par le web: Pouvez-vous faire mieux ?
 
Connecter Drupal à des API externes
Connecter Drupal à des API externesConnecter Drupal à des API externes
Connecter Drupal à des API externes
 

Mieux Filtrer ses listes WordPress avec Ajax et WP_Query

  • 1. Mieux Filtrer vos listes avec AJAX *** Trucs et conseils pour mieux filtrer vos listes WordPress via AJAX
  • 2. Symetris libère votre potentiel web. *** • Fondée à Montréal en 2004 • 9 spécialistes web à l’interne • Développement de sites web qui vont au-delà du marketing • Maîtrise des CMS open-source • Optimisation pour les appareils mobiles Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 3. Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion Qui sommes-nous? Brad Muncs Président Symetris 12 ans d’expérience dans le web Je mange du web matin, midi et soir Matthieu Gadrat Développeur PHP et Lead technologique 4 ans d’expérience avec des CMS open-source Amateur de ski
  • 4. Ordre du jour 1. Les listes dans WordPress 2. Améliorer les filtres avec AJAX 3. Jetons un coup d’oeil au code 4. Conclusion Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 5. - 1 - Pourquoi WordPress est un outil de choix pour nos clients? Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 6. WordPress est plus qu’un blogue • CMS complet • Différent type de contenu (Post types) • Catégorisation facile à utiliser • WordPress est bon pour générer des listes Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 7. Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion Mr. Wilkins Mr Wilkins est un distributeur de nourriture pour chien • Entreprise de taille moyenne • Distribue à des détaillants (B2B) • A besoin d'un catalogue en ligne pour présenter ses produits Prenons comme exemple d’entreprise :
  • 8. • WordPress est donc l'outil parfait pour un catalogue • Parfait pour Mr Wilkins Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 9. Dans WordPress, les listes sont déjà présentes • Liste de post • Archives • Catégories • Tags Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 10. Filtrage traditionnel dans WordPress • Via les URL • Par catégorie ou tag Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 11. Bénéfices • Ça fonctionne «Out of the box » • Intuitif • Pas de code Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 12. Obstacles pour les utilisateurs • Plus il y a de données, plus c’est laborieux • Pas de «Custom fields» • Pas de filtre complémentaire (Faceted search) • Visuellement décevant • La page doit être rafraichie à chaque nouvelle requête Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 13. • Contiennent beaucoup de données • Incluent des spécifications (Custom Fields) • Doivent être efficaces Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion Les listes de produit de Mr Wilkins:
  • 14. Pour atteindre les objectifs de Mr. Wilkins, il faut étendre les fonctionnalités de filtre de WordPress Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 15. - 2 - Mieux filtrer les listes de « POST » dans WordPress Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 16. Plugin disponibles • Faceted Search • http://wordpress.org/plugins/faceted-search/ • Catégories / Tags • wp-posts Filter • http://wordpress.org/plugins/wp-posts-filter/ • Catégories / Tags Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 17. Plugin disponibles • ajax posts Filter • http://wordpress.org/plugins/ajax-post-filter/ • Quicksand jQuery Post filter • http://wordpress.org/plugins/quicksand-jquery-post-filter/ • Utilise jQuery Quicksand • Mauvais pour gros volume de données • ETC… Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 18. Il est possible que l'une de ces solutions, ou un autre plugin soient suffisants... ... Mr Wilkins, lui, n'est pas satisfait Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 19. Nous allons donc lui créer une solution personnalisée en utilisant AJAX avec WordPress (et WP_Query) Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 20. WP_Query est un objet à l’origine de la création des listes dans WordPress En fait, c’est le dénominateur commun de toute les requêtes. • WP_Query est roi • WP_Query est puissant • WP_Query est flexible Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 21. Qu'est-ce qu'AJAX? Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 22. Définition • Asynchronous JavaScript And XML • Échange de donnée XML et Javascript de manière asynchrone lors de la navigation d'un utilisateur sur une même page web. Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 23. Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 24. Avantages • Performant pour l'affichage d'un grand nombre de données (en petites doses) • Feedback constant à l'utilisateur • Permet des effets Javascript « Fancy » Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 25. Inconvénients • Attention à l'accessibilité • Si le JavaScript est désactivé, ça ne marchera simplement pas • Effort supplémentaire pour le SEO Mais nous pouvons les surmonter Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 26. Bénéfices de faire un module personnalisé • Utiliser WP_Query • Fonctionne avec tous les types de données ainsi que tous les champs • « Fancy » Javascript Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 27. Mr. Wilkins a hâte de commencer! Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 28. - 3 - Jetons un coup d'oeil au code Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 29. Dans WordPress, il y a déjà un mécanisme pour traiter les requêtes en AJAX pour la section « admin » • /wp-admin/admin-ajax.php • /wp-admin/admin-ajax.php?action=mon_callback • Toutes requête à ce fichier seront envoyées à la fonction appelé dans l'argument "action" Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 30. Créons un simple plugin • Post type • Taxonomie • Un Widget (affiche le filtre et le contenu) • Javascript • AJAX Callback Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 31. Détail des filtres Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 32. Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 33. Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 34. Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 35. Détail du contenu WP_Query et sa« Loop » Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 36. Le Javascript • N’oubliez pas d’inclure le JavaScript • Sur le premier chargement de la page: Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 37. Écouter les changements du formulaire et faire un « POST » Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 38. JSON JSON (JavaScript Object Notation) est un format de données textuelles, générique,[...]Il permet de représenter de l’information structurée. (Wikipédia) Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion Réponse à la requête d’AJAX:
  • 39. Traitement de la réponse Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 40. Dernière étape: Le « Callback » Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 41. Envoyer la réponse JSON Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 42. Démo fonctionnelle Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 43. Les « Mais » • Beaucoup de données, utiliser un « Pager » ou un « infinite scroll » (comme Facebook) • Pas de Javascript? • Afficher le bouton «Submit» du formulaire et s'assurer que le « Widget » prenne en compte les requêtes POST • Référencement (SEO) • XML Sitemap très important pour compenser Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 44. - 4 - Conclusion Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 45. Bénéfices pour le client • Les clients de Mr. Wilkins trouvent rapidement ce dont ils ont besoin. • Le site de Mr Wilkins est plus attrayant que celui de ses compétiteurs. • Mr Wilkins peut utiliser le CMS pour augmenter son volume de contenu tout en gardant un site performant. Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 46. Bénéfices pour le développeur • Il n'a pas eu à se battre avec un plugin pour la présentation des produits • Facilité d’ajouter des champs et/ou filtres • Il a pu utiliser le merveilleux et plein de ressource WP_Query. • Son code est facilement réutilisable pour son prochain projet peut importe les post types ou taxonomie Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 47. Cette technique n'est pas juste valable pour les « Posts » • Users • Catégories • Commentaires Et permet un filtrage avancé • Sélectionner le nombre d’items par page • Filtrer sur la langue • Filtrer sur des plages de données (« range ») Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 48. Bref, que retenir ? Pas la peine d’utiliser un plugin existant pour filtrer des listes. Avec WP_Query et AJAX, vous bénéficiez d’un contrôle supérieur sur vos listes de données sans pour autant alourdir votre travail. Briser la glace WordPress Filtrer avec AJAX Détail du Code Conclusion
  • 49. Merci ! Des questions Contactez-nous : info@symetris.ca brad@symetris.ca / matthieu@symetris.ca Présentation PPT disponible sur Slideshare Code on Github (https://github.com/symetris/wordcamp2013)