我在我的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(); ?>
之前它正在进行我的本地设置,但现在它不能用于我的实时版本。
请提出解决方案。
答案 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(); ?>
我的搜索在此之后正在处理多个单词。但我在这里面临另一个错误。当我搜索具有特殊字符的任何内容时,它无效。它不适用于引号,撇号等。
如果有人能纠正这个问题,请帮忙。