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 搜索不适用于多个单词的主要内容,如果未能解决你的问题,请参考以下文章