Pour plusieurs termes de recherche; ?s=hello+world
Wordpress work trouver "hello world" comme the_title
, the_content
posts!
Hello Anna
wordpress n’obtient pas un résultat! Je veux utiliser toutes les clés:
"Bonjour le monde" , "Bonjour" , "Le monde"
Peut-être array('hello world','hello','world');
mais ça dépasse mon exp.! Est-il possible de diviser la requête en une seule boucle et d'envoyer plusieurs requêtes? Y a-t-il quelqu'un qui peut aider sur le sujet? par exemple. ?s=
, $_GET
Quelque chose voulu a dû ressembler à appeler plus de résultats pour plusieurs requêtes!
Fixe: Rechercher et obtenir toutes les clés;
<?php
$the_keys = preg_split('/\s+/', str_replace('-',' ',get_query_var('s')),-1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
$total_keys = count($the_keys);
$the_query = new WP_Query(array('post_type'=>'nothing'));
if($total_keys>1){
for($i = 0; $i<=$total_keys; $i++) {
$the_query_mask = new WP_Query(array('s' => $the_keys[$i]));
$the_query->post_count = count( $the_query->posts );
$the_query->posts = array_merge( $the_query->posts, $the_query_mask->posts );
}
} else {
$the_query= new WP_Query(array('s' => get_query_var('s')));
}
if ($the_query->have_posts()) : ?>
Remarque:'post_type'=>'nothing'
nécessite simplement la fusion de tableaux!
Peut-être que quelqu'un comme moi veut des résultats logiques flous
J'ai résolu de cette façon: "search.php
"
<?php
$the_keys = preg_split('/\s+/', get_query_var('s'),-1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
$total_keys = count($the_keys); // Count the search term
$the_query = new WP_Query(array('s' => get_query_var('s')));
// IF have multiple term and havent a result
if($total_keys > 1 && $the_query->post_count < 1){
// Loop for total term count, if found post break it! <3
for($i = 0; $i < $total_keys; $i++) {
//Set the new array term value
$the_query = new WP_Query(array('s' => $the_keys[$i]));
//if found post break it! <3
if($the_query->post_count>0) break;
}
}
// List of my Level 2 filter posts :)
if ($the_query->have_posts()) : ?>
......
<?php
endwhile;
endif;
?>
Normalement:
?s=hello+baby
=> find true ?s=hello
=> find true ?s=baby
=> find true ?s=hello+whats+up
=> find false ?s=hey+baby
=> find false rechercher, Travailler maintenant et trouver p.ex. ?s=hello+whats+up
=> find true