wordpress搜索不能使用多个单词

时间:2016-06-16 08:46:47

标签: wordpress search search-multiple-words

我在我的wordpress网站上使用平面主题。当我写“问题跟踪器”之类的多个单词时,此搜索无效。总而言之,它就像“问题”或“跟踪器”一样正常工作。 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(); ?>

之前它正在进行我的本地设置,但现在它不能用于我的实时版本。

请提出解决方案。

1 个答案:

答案 0 :(得分:0)

我已经尝试了很多来纠正这个问题,但无法弄明白。为了纠正我的搜索,我使用了自定义SQL查询,并且工作正常。

因为我需要一个简单的wordpress搜索帖子标题和内容,它们应该适用于多个单词。我的代码如下:

将它放在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(); ?>

我的搜索在此之后正在处理多个单词。但我在这里面临另一个错误。当我搜索具有特殊字符的任何内容时,它无效。它不适用于引号,撇号等。

如果有人能纠正这个问题,请帮忙。