web-dev-qa-db-fra.com

Pagination sur requête personnalisée

J'utilise le code suivant avec query_posts pour créer une recherche personnalisée:

$args = array(
    'post_type' => 'species',
    'meta_query' => $meta_query,
    'tax_query' => $tax_query
);

$meta_query est mis en place avec quelques segments de code comme ceci:

if (!empty($_POST["s_aquarium_H"])) {
    $val = convert_values('size', $size, $_POST["s_aquarium_H"]);
    $aquarium_H = array(
        'key' => 'aquarium_H',
        'value' => $val,
        'type' => 'numeric',
        'compare' => '<='
    );
    $meta_query[] = $aquarium_H;
}

Cela fonctionne parfaitement bien et est accessible en visitant /advanced-search/.

Cependant, ma pagination ne fonctionne pas. Lorsque vous cliquez sur Next Entries, l'URL devient /advanced-search/page/2/ mais vous rouvrez simplement le formulaire de recherche avancée.

J'imagine que c'est parce que j'utilise $_POST. Existe-t-il un moyen d'utiliser la pagination avec $_POST ou dois-je changer mon code en get_query_var ou quelque chose de ce genre?


MODIFIER

Mes règles de réécriture semblent être correctes: /advanced-search/page/2/ affiche pagename: advanced-search, paged: 2 dans le plug-in Rewrite Analyzer de Monkeyman.

Rewrite Rules


SUPPLEMENT EDIT

Ma page advanced-search.php utilise le code suivant pour déterminer si elle doit afficher le formulaire de recherche ou les résultats. Je suppose que cela nécessite une réécriture si je veux utiliser la pagination:

<?php if ( isset( $_POST["act"] ) && $_POST["act"] == "s" ) : ?>

Quelqu'un a-t-il une idée de la manière dont je pourrais procéder pour réécrire cela? Je suppose que GET au lieu de POST doit être utilisé?


Merci d'avance,

2
dunc

Au final, cela n’a rien à voir avec la pagination - en tant que telle.

J'avais besoin de changer tout mon formulaire en méthode GET et en variables $_REQUEST plutôt qu'en POST et $_POST.

0
dunc

Ajoutez ceci à votre requête:

'paged' => get_query_var('paged')

Comme suit:

$args = array(
    'post_type' => 'species',
    'meta_query' => $meta_query,
    'tax_query' => $tax_query,
    'paged' => get_query_var('paged')
);

Devrait faire le tour .. Utiliser Wp-pageNavi? n'oubliez pas d'ajouter le
La balise wp-pagenavi juste après la fin de la boucle

<div class="navigation"><?php wp_pagenavi(); ?></div>

.
J'espère que cela t'aides ;)
Salut, Sagive.

1
Sagive SEO
if (!empty($_REQUEST["s_aquarium_H"])) {
   $_GET["s_aquarium_H"] = $_REQUEST["s_aquarium_H"];
    $val = convert_values('size', $size, $_REQUEST["s_aquarium_H"]);
    $aquarium_H = array(
        'key' => 'aquarium_H',
        'value' => $val,
        'type' => 'numeric',
        'compare' => '<='
    );
    $meta_query[] = $aquarium_H;
}
0
Rajeev Vyas