J'essaie d'utiliser la requête de recherche avec un tableau d'arguments pour affiner les résultats de la recherche, mais j'échoue terriblement. C'est ce que j'ai jusqu'ici.
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$query_string = 's=test&category=wordpress'
$s_array = array(
'post_type' => 'blog',
'caller_get_posts' => 1,
'paged' => $paged,
'meta_query' => array(
array(
'key' => 'votes_percent',
'value' => '50',
'compare' => '>',
'type' => 'numeric',
)
)
);
$s_query = http_build_query($s_array);
$is_query = '&' . $s_query;
$s_streaming = $query_string . $is_query;
query_posts($s_streaming);
En faisant écho à $ s_streaming, je reçois
s=test&category=wordpress&post_type=blog&caller_get_posts=1&paged=1&meta_query%5B0%5D%5Bkey%5D=votes_percent&meta_query%5B0%5D%5Bvalue%5D=50&meta_query%5B0%5D%5Bcompare%5D=%3E&meta_query%5B0%5D%5Btype%5D=numeric
Si je supprime les clés meta_query cela fonctionne, donc je suppose que c'est là que réside mon problème.
Ça marche bien comme ça
query_posts($s_array); //just using the array to filter
query_posts($query_string); //just using the search query
//$query_string = 's=test&category=wordpress';
J'essaie de construire la chaîne à interroger, car cela échoue.
query_posts($query_string . $s_array); //using both
Est-ce que quelqu'un peut-il me montrer la bonne direction?
Je suggérerais de ne pas utiliser $query_string
pour simplifier les choses. Si vous utilisez un tableau, conservez le formulaire tableau pour les variables de requête:
global $wp;
$paged = ((int)get_query_var('paged')) ? (int)get_query_var('paged') : 1;
$s_array = array(
'post_type' => 'blog',
'caller_get_posts' => 1,
'paged' => $paged,
'meta_query' => array(
array(
'key' => 'votes_percent',
'value' => '50',
'compare' => '>',
'type' => 'numeric',
)
)
);
$new_query = array_merge( $s_array, (array)$wp->query_vars );
query_posts($new_query);
Si vous essayez de combiner $query_string
et $s_array
, essayez ceci ...
<?php
//We use values of 's' and 'category' to add values to $s_array
$query_string = 's=test&category=wordpress';
$s_array = array(
'post_type' => 'blog',
'caller_get_posts' => 1,
'paged' => $paged,
'meta_query' => array(
array(
'key' => 'votes_percent',
'value' => '50',
'compare' => '>',
'type' => 'numeric',
)
),
's' => 'test',
'category' => 'wordpress'
);
//Use $s_array for query_posts directly
query_posts($s_array);
?>
Je suppose que ça va marcher ...