如何在WordPress中添加站内搜索?
最近更新时间: February 18, 2024
在使用WordPress建站中,站内搜索是常见的功能之一,可以帮助我们快速找到相关的文章或者产品,尤其是在内容较多的资讯类,博客类以及产品类网站,那么如何在WordPress网站中添加站内搜索功能呢?
步骤一:调用搜索框代码:
把这段代码放到我们需要展示搜索框的位置,既可以显示系统默认的搜索框以及搜索功能。
<?php get_search_form (); ?>
步骤二:搜索框内容及样式修改:
在当前使用的主题目录下找到 searchform.php 文件进行相关修改即可,同时可以通过自定义css样式可以直接修改其样式。
步骤三:将搜索结果页动态页面改为静态,这样更有利于SEO优化:
在对应主题根目录的 functions.php 文件中添加如下代码:
//Search result link style modification
function redirect_search() {
if (is_search() && !empty($_GET['s'])) {
wp_redirect(home_url("/search/").urlencode(get_query_var('s')));
exit();
}
}
注意:这种代码只能是常规搜索可以加,如果是有选择分类搜索(下面步骤五会说到),加上后会影响搜索结果,不能加。
步骤四:只让文章中的标题匹配用户搜索字词时显示对应的搜索结果
在主题根目录 functions.php 中添加如下代码:
//Search results match the title
add_filter( 'posts_search', 'ytkah_search_by_title', 10, 2 );
function ytkah_search_by_title( $search, $wp_query ) {
if ( ! empty( $search ) && ! empty( $wp_query->query_vars['search_terms'] ) ) {
global $wpdb;
$q = $wp_query->query_vars;
$n = ! empty( $q['exact'] ) ? '' : '%';
$search = array();
foreach ( ( array ) $q['search_terms'] as $term )
$search[] = $wpdb->prepare( "$wpdb->posts.post_title LIKE %s", $n . $wpdb->esc_like( $term ) . $n );
if ( ! is_user_logged_in() )
$search[] = "$wpdb->posts.post_password = ''";
$search = ' AND ' . implode( ' AND ', $search );
}
return $search;
}
步骤五:按栏目(分类)类别搜索设置:
在主题根目录functions.php 中添加如下代码:
//With Category Search Settings
function my_searchwp_get_search_form_with_categories_dropdown( $form ) {
ob_start(); ?>
<form role="search" method="get" class="search-form" action="<?php echo home_url( '/' ); ?>">
<label>
<span class="screen-reader-text">Search For</span>
<input type="search" class="search-field" placeholder="Search..." value="<?php echo esc_attr( get_search_query() ); ?>" name="s" title="Search for:" />
</label>
<?php
// for more information see http://codex.wordpress.org/Function_Reference/wp_dropdown_categories
$swp_cat_dropdown_args = array(
'show_option_all' => __( 'Any Category' ),
'name' => 'cat',
);
wp_dropdown_categories( $swp_cat_dropdown_args );
?>
<input type="submit" class="search-submit" value="Search" />
</form>
<?php return ob_get_clean();
}
add_filter( 'get_search_form', 'my_searchwp_get_search_form_with_categories_dropdown' );
注意:在这一步如果要修改搜索框内容或者样式代码,以上面这个的代码为准(之前那个不是分类的搜索框使用的searchform.php文件不用管也不用动不影响);调用方法都是一样的即使用以下代码。
<?php get_search_form (); ?>
步骤六:搜索结果页设置(一般以列表的形式出现,类似与网站列表页):
这里需要修改主题目录下的 search.php 文件,没有的话新建一个。
文件中主要包含页面头部,尾部,以及搜索显示结果数,和符合搜索条件的搜索结果。
其中用户搜索词,也可以做为搜索结果页的标题或者关键词,代码如下:
<?php the_search_query(); ?>
其中显示搜索结果数量代码如下:
<span class="searchnum"><?php echo $wp_query->found_posts; ?></span> <span class="searchkey"><?php _e( 'Search Results Found For', 'locale' ); ?>: "<?php the_search_query(); ?>"</span>
其它样式和内容都可以根据我们的需要进行自定义或者添加。
通过以上六个步骤,我们基本上可以做出我们想要的搜索功能框,并添加到需要显示的页面部分,从而使网站的功能更加丰富。
版权声明©:希望对您会有所帮助;转载请注明出处。