2016-06-16 17 views
0

私のワードプレスのウェブサイトの1つにフラットテーマを使用しています。この検索で​​は、 "issue tracker"のような複数の単語を書くとうまくいきません。 1つの単語については、 "issue"や "tracker"のようにうまくいきます。 searchform.phpファイルのコードは次のとおりです。ワードプレス検索で複数の単語が使用されない

<form method="get" id="searchform" action="<?php echo esc_url(home_url('/')); ?>"> 
     <label for="s" class="assistive-text"><?php _e('Search', 'flat'); ?></label> 
     <input type="text" class="field" name="s" id="s" placeholder="<?php esc_attr_e('Search', 'flat'); ?>" /> 
     <input type="submit" class="submit" name="submit" id="searchsubmit" value="<?php esc_attr_e('Search', 'flat'); ?>" /> 
    </form> 

と私のsearch.phpファイルは次のとおりです。

<?php get_header(); ?> 

<?php flat_hook_search_before(); ?> 
    <h1 class="page-title"><?php printf(__('Search Results for: %s', 'flat'), get_search_query()); ?></h1> 
    <div id="content" class="site-content" role="main"> 
     <?php flat_hook_search_top(); ?> 

    <?php if (have_posts()) : ?> 

     <?php while (have_posts()) : the_post(); ?> 
      <?php get_template_part('content', get_post_format()); ?> 
     <?php endwhile; ?> 
     <?php the_posts_pagination(array('prev_text' => __('<i class="fa fa-chevron-left"></i>', 'flat'), 'next_text' => __('<i class="fa fa-chevron-right"></i>', 'flat'))); ?> 
    <?php else : ?> 
     <?php get_template_part('content', 'none'); ?> 
    <?php endif; ?> 

     <?php flat_hook_search_bottom(); ?> 
    </div> 
    <?php flat_hook_search_after(); ?> 
<?php get_footer(); ?> 

以前は、それは私の地元のセットアップに取り組んでいたが、今それは私のライブバージョンに取り組んでいません。

解決策をご提案ください。

答えて

0

私はこの問題を解決するために多くの試みをしましたが、それを把握することはできませんでした。私の検索を訂正するために、私はカスタムSQLクエリとそれをうまく使っています。

私は、複数の単語に対して機能するはずの投稿タイトルとコンテンツの簡単なワードプレス検索が必要です。次のように私のコードは次のとおりです。

はのfunctions.phpでこれを入れて次のように

function custom_sql_for_search() { 

    global $wpdb; 

    $search_string = esc_sql($_GET['s']); 


    $sql = "SELECT * FROM {$wpdb->base_prefix}posts WHERE 

       (post_title LIKE '%".$search_string."%' OR post_content LIKE '%".$search_string."%') 
       AND (post_status = 'publish') 
       ORDER BY post_type DESC, post_date DESC"; 

       $query=$wpdb->get_results($sql); 

       foreach ($query as $post) { 
         $result[$post->ID] = $post->ID; 
       } 

      return $result; 
} 

は今、私は私のsearch.phpコードを変更:

私の検索は後に複数の単語のために働いている
<?php get_header(); 

flat_hook_search_before(); 

$search_result = custom_sql_for_search(); 

     ?> 

      <h1 class="page-title"><?php printf(__('Search Results for: %s', 'flat'), get_search_query()); ?></h1> 

     <div id="content" class="site-content" role="main"> 

     <?php flat_hook_search_top(); 

      if (count($search_result) > 0) { 
      foreach($search_result as $post) { 

       $post = get_post($post->ID); 
       setup_postdata($post); 

       get_template_part('content', get_post_format()); 

      } 


     } else { 

      get_template_part('content', 'none'); 
     } 

     flat_hook_search_bottom(); 

    ?> 
     </div> 

<?php flat_hook_search_after(); 
     get_footer(); ?> 

この。しかし、私はここに別のバグに直面しています。私が特殊文字で何かを検索するとき、それは動作していません。倒置カンマ、アポストロフィなどでは機能しません。

誰でもこれを修正できる場合はお手伝いをしてください。

関連する問題