web-dev-qa-db-fra.com

Manière correcte d'utiliser un formulaire pour filtrer les publications personnalisées par termes de taxonomie?

Ceci est la suite de cet article .

J'ai construit mon formulaire et réussi à obtenir les termes de taxonomie corrects sous forme de liste déroulante, mais je me demande quelle action je devrais utiliser dans mon formulaire et comment je peux rappeler les options sélectionnées dans le même formulaire sur la page de résultats?

C'est le code que j'ai écrit jusqu'à présent qui définit query_posts () pour qu'il récupère les publications personnalisées 'ftevent' dont les termes de taxonomie 'type', 'période' et 'durée' sont définis par quelque chose que l'utilisateur choisit:

Lien Pastie

Et voici la fonction osu_list_terms () que vous verrez dans ce code qui tente de rappeler les options sélectionnées dans chaque liste déroulante:

function osu_list_terms($osu_tax, $osu_recall) {
    // list terms in fttype taxonomy
    $taxonomy = $osu_tax;
    $tax_terms = get_terms($taxonomy);
    foreach ($tax_terms as $tax_term) {
        echo '<option' . $osu_recall . '>' . $tax_term->name . '</option>';
    }
}

C’est un travail en cours, je suis donc sûr que j’aurai quelques autres problèmes (comme commander les publications personnalisées à l’aide du champ personnalisé "StartEventDate"), mais pour le moment, essayer de comprendre comment Wordpress fonctionne avec quelque chose comme cette forme.

J'ai l'habitude d'utiliser

<?php echo $_SERVER['PHP_SELF']; ?>

pour les formulaires afin que le formulaire soit soumis à la même page. J'espérais pouvoir faire la même chose avec cela, mais Wordpress redirige vers une URL telle que celle-ci et utilise le modèle archive.php au lieu du modèle de page actuel dans lequel j'ai inséré ce formulaire:

/?fttype=Group+walks&ftperiod=Weekday&ftduration=Half-day&showfilter=true

Existe-t-il une façon "correcte" de procéder? Je suis un peu confus quant à la manière dont je peux styler un modèle pour les résultats de la recherche. Les résultats sont également affichés à l'aide de la page d'archivage (qui est également utilisée par les résultats par nuage de mots-clés).

Des conseils que vous pouvez offrir?

Merci,

osu

1
Osu

Si vous laissez l'attribut action vide, le formulaire sera envoyé à l'URL actuelle.

Cependant , si votre attribut method est get, le formulaire sera renvoyé à l'URL actuelle, moins la chaîne de requête actuelle .

Si vous souhaitez conserver la chaîne de requête actuelle, vous pouvez utiliser des entrées masquées pour répliquer les paramètres actuels.

Et jamais ne faites confiance à PHP_SELF !

1
TheDeadMedic