2016-06-16 5 views
0

Я использую плоскую тему на одном из моих веб-сайтов wordpress. В этом поиске не работает, когда я пишу несколько слов, например «Отслеживание проблем». За одно слово он отлично работает, как «проблема» или «трекер». Код searchform.php файла:wordpress search не работает с несколькими словами

<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-запрос и его работу отлично.

Как мне нужен простой поиск в WordPress для заголовков и контента, которые должны работать для нескольких слов. Мой код выглядит следующим образом:

Put это в 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(); ?> 

Мой поиск работает по нескольким словам, после это. Но я столкнулся с другой ошибкой здесь. Когда я ищу что-либо со специальным символом, он не работает. Он не работает с перевернутыми запятыми, апострофом и т. Д.

Пожалуйста, помогите, если кто-нибудь исправит это.

 Смежные вопросы

  • Нет связанных вопросов^_^