web-dev-qa-db-fra.com

Comment permettre à l'utilisateur d'effectuer une recherche par plusieurs balises

J'ai quelques options de menu déroulant dans ma barre latérale wordpress:

enter image description here

Lorsqu'un utilisateur sélectionne une option dans l'un des menus déroulants, il est dirigé vers la page de résultat de la recherche:

http://mywebsite/wp/?post_type=post&taxonomy=category&terms=29&search_type=or&order=title

Le 29 est la balise recherchée qui correspond à ce que l'utilisateur a sélectionné.

Je fais cette fonctionnalité avec JQuery:

$('select').on('change', function () {
    var url = $(this).val(); // get selected value
    if (url) { // require a URL
        window.location = "http://mywebsite/wp/?post_type=post&taxonomy=category&terms=" + url + "&search_type=or&order=title"; // redirect
    }
    return false;
});

J'essayais, au lieu de ce qui précède JQuery, d'avoir ceci:

$("#search").click(function(){
    var k = $("#mtsw-form-children-term-ids-10 option:selected").val();
    var m = $("#mtsw-form-children-term-ids-13 option:selected").val();
    var o = $("#mtsw-form-children-term-ids-11 option:selected").val();
    alert("Location: " + k + "\nSpecialty: " + m + "\nPhysician: " + o);
            //window.location = ; //SEARCH BASED ON LOCATION, and/or SPECIALTY, and/or PHYSICIAN tags
});

J'utilise le widget Sélection multi-terme pour le menu déroulant.

Comment saurais-je si je suis capable d'accomplir cette recherche? Je suis nouveau sur Wordpress alors j'essaie de comprendre le point de départ.

3
Si8

Tout d'abord, arrêtez de réutiliser des catégories et des balises, utilisez plutôt des taxonomies personnalisées. Cela vous donnera:

  • archives et listes
  • URL pour afficher chaque taxonomie
  • Interfaces utilisateur correspondant aux noms

Personnellement, j'aurais choisi un type de message personnalisé avec des taxonomies de spécialité et d'emplacement. Cependant, je suppose qu’il s’agit d’une manière de filtrer les publications, alors inscrivez-vous à ces taxonomies:

  • emplacement
  • spécialité
  • médecin

Ensuite, jetez votre javascript et implémentez votre interface sous forme de formulaire.

<form action="" method="GET">

Avec 3 entrées sélectionnées avec ces noms:

  • emplacement
  • spécialité
  • médecin

Les options de ces entrées de sélection auront des valeurs correspondant aux slug de chaque terme.

Pour des paramètres supplémentaires tels que l'ordre, mettez-les dans une entrée de type caché.

Enfin, ajoutez un bouton d'envoi et nommez-le 'recherche'. Vous devriez maintenant avoir une version non-js de ce que vous vouliez.

Vous devriez aussi avoir ces archives:

  • example.com/location/example
  • example.com/specialty/example
  • example.com/physician/example

Et ces modèles à votre disposition:

  • taxonomy-location.php
  • taxonomy.php
  • archive.php

pour chaque taxonomie, reportez-vous au diagramme de hiérarchie des modèles lorsque vous choisissez celle que vous souhaitez implémenter.

3
Tom J Nowell