web-dev-qa-db-ja.com

1つのプロセス内で複数の検索用語のクエリをサポートする方法

複数 検索語の場合。 ?s=hello+world

Wordpressの仕事を見つける "こんにちは世界" the_titlethe_content投稿のように!

  • そして、私たちの投稿タイトルHello Anna wordpressが1つの結果を得ないならば、そして!

すべてのキーを使いたい:

"こんにちは世界" "こんにちは" "世界"

たぶん array('hello world','hello','world');しかし、それは私の経験を超えています!それは単一のループ内でクエリを分割し、複数のクエリを送信することができるかもしれませんか?この問題を解決できる人はいますか? 例えば ?s=$_GET

何かが複数のクエリに対してより多くの結果を呼び出すのが好きだったにちがいありません!

1
lllllllllllll

修正:すべてのキーを検索して結果を出す。

    <?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()) : ?>

注意:'post_type'=>'nothing'配列のマージが必要です。

1
lllllllllllll

多分私のような人がファジィ論理結果が欲しいのです

私はこのようにして解決しました:"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; 
?>

投稿タイトル:(こんにちは赤ちゃん

通常:

  • ?s=hello+baby => 真実を見つける
  • ?s=hello => 真実を見つける
  • ?s=baby => 真実を見つける
  • ?s=hello+whats+up => 偽を見つける
  • ?s=hey+baby => 偽を見つける

検索、今すぐ作業し、eg?s=hello+whats+up => trueを検索を見つける

0
lllllllllllll