wordpress 搜索不适用于多个单词

Posted

技术标签:

【中文标题】wordpress 搜索不适用于多个单词【英文标题】:wordpress search is not working with multiple words 【发布时间】:2016-06-16 08:46:46 【问题描述】:

我在我的一个 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】:

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

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

把这个放在functions.php中:

function custom_sql_for_search( ) 

    global $wpdb;

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


     $sql = "SELECT  * FROM $wpdb->base_prefixposts 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(); ?>

在此之后,我的搜索正在搜索多个单词。但我在这里面临另一个错误。当我搜索任何带有特殊字符的东西时,它不起作用。它不适用于引号、撇号等。

如果有人可以纠正这个问题,请帮助。

【讨论】:

以上是关于wordpress 搜索不适用于多个单词的主要内容,如果未能解决你的问题,请参考以下文章

PHP会话不适用于多个WordPress页面

搜索结果转换中的多个索引不适用于Kentico

WordPress搭建

媒体查询不适用于 Wordpress

Bootstrap 不适用于 wordpress 插件

WordPress REST API 不适用于自定义 wordpress 路径