J'ai la requête suivante, ce qu'il fait est d'obtenir une liste de "Livres" (type de message personnalisé). Cette liste est affichée sur une page comportant également un petit formulaire avec un menu déroulant contenant les termes "Editors" (taxonomie personnalisée). Lorsqu'un utilisateur choisit un "éditeur", il recharge la page et la requête renvoie les "livres" correspondants.
// Taxonomy query
$tax_query = array('relation' => 'AND');
if($_POST['editor']) array_Push($tax_query,array('taxonomy' => 't_editor','terms' => array($_POST['editor']),'field' => 'slug'));
// Pagination
if($_POST['reset_pagination'] || !get_query_var('paged')){
$paged = 1;
}else if (get_query_var('paged')) {
$paged = get_query_var('paged');
}
// Query
$myquery = array(
'post_status' => 'publish',
'post_type' => 'books',
'orderby' => 'title',
'order' => 'ASC',
'tax_query' => $tax_query,
'paged' => $paged
);
Comme il y a beaucoup de "Livres", j'utilise la pagination.
Maintenant, le problème. Disons que je suis sur la liste générale (non filtré par "Editeur"), j'ai 200 résultats, avec une pagination de dix par page. Supposons que je navigue jusqu'à la page 8. Ensuite, si je décide de filtrer mon choix par "Editeur", la page se recharge et affiche uniquement ces résultats. Le problème est que, comme je l’étais à la page 8, mon URL est associée à/page/8 /.
J'ai trouvé comment réinitialiser "paginé" sur 1 après un filtrage (avec un champ masqué "reset_pagination" sur le formulaire), cela fonctionne et j'ai les résultats de la page 1 après un filtrage, MAIS dans l'URL la pagination (/page/8 /) reste.
Comment puis-je supprimer "/ page/x /" de l'URL?
Edit: Voici le code du formulaire
<form action="" method="post" id="filter">
<ol>
<li>
<?php include(TEMPLATEPATH . '/includes/forms/filter_editors.php'); ?>
</li>
<li>
<input type="hidden" name="reset_pagination" value="1"/>
<input type="submit" class="submit" value="<?php _e('Ok'); ?>" />
</li>
</ol>
Votre formulaire sera envoyé à l'URL spécifiée dans le paramètre action
ou à la même URL si vous ne le spécifiez pas. Vous commencez à /books/page/8/
, donc si votre paramètre action
est vide, l’URL résultante sera également /books/page/8/
. Remplissez simplement le paramètre action
avec /books/
et cela devrait fonctionner.