web-dev-qa-db-fra.com

Filtrage dynamique de WP_Query sur le serveur frontal

J'ai une page d'archive pour un type de message personnalisé (CPT) sur laquelle j'essaie de faire deux choses:

  1. Afficher une liste de termes figurant dans la taxonomie associée au CPT,

  2. Utilisez ces termes pour modifier dynamiquement une requête wp_query qui sera affichée sur la même page.

Par exemple, mon type de message personnalisé est "Lire". J'ai une taxonomie personnalisée de "Lecture" associée à celle-ci, ainsi que plusieurs termes tels que "Série", "Messages", "Services spéciaux", etc.

J'aimerais utiliser les termes énumérés comme moyen de mettre à jour ce qui est affiché dans la boucle (par exemple, si quelqu'un clique sur "Série", la boucle ne montrera que les publications qui sont dans "Série", si elles cliquent sur "Messages", la boucle mettra alors à jour et affichera uniquement les messages dans 'Messages', etc.).

J'ai répertorié avec succès les termes à l'aide de la fonction 'get_terms'. Cependant, je ne sais pas comment faire en sorte que ces termes changent dynamiquement ce qui est affiché dans la boucle (j'utilise un nouveau wp_query).

Comment permettre à un terme sélectionné par l'utilisateur de mettre à jour de manière dynamique (via ajax?) La requête affichée?

J'apprécie toute aide que vous pouvez me donner!

1
sevenspirits

Voici ce que j'ai fait récemment sur un site, qui devrait être facilement adapté à votre cas. J'utilisais jQuery pour un certain nombre de choses sur ce site, je me suis donc fié à cela.

Bien que WP ait une excellente manipulation de AJAX, il était plus simple dans ce cas d'utiliser simplement la méthode AJAX load () de jQuery. Si votre page actuelle contient un élément div#loaded-content-area et que vous souhaitez le remplir avec la partie du div#content-to-load d'une autre page Web, vous devez simplement exécuter jQuery:

$("div#loaded-content-area")
.load("http://www.example.org/page-of-data/ #content-to-load");

Donc, pour résoudre votre problème, je voudrais bien étiqueter le contenu clé de mon modèle de taxonomie-terme dans le thème avec ID="content-to-load" (ou l’identité qui vous convient le mieux, bien sûr).

Chargez la liste des permaliens de termes dans la page affichée et associez un gestionnaire de clics à chacun de ceux qui transmettent l'attribut href à partir du permalien en tant qu'URL .load de jQuery. En cliquant ensuite sur un terme, jQuery récupérera le contenu souhaité de la page du terme et l’affichera dans la page en cours sans actualisation.

Cette approche présente quelques avantages:

1 - Amélioration progressive. Si pour une raison quelconque un navigateur ne dispose pas de JavaScript, la page de terme sera simplement chargée normalement.

2 - Inutile de manipuler intelligemment une requête: le terme pages fait tout pour vous.

1