web-dev-qa-db-fra.com

Comment prendre en charge plusieurs termes de recherche dans un processus?

Pour plusieurs termes de recherche; ?s=hello+world

Wordpress work trouver "hello world" comme the_title, the_content posts!

  • Et, si notre titre post 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!

1
lllllllllllll

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!

1
lllllllllllll

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; 
?>

par exemple. titre de poste: ( Bonjour bébé )

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

0
lllllllllllll