WordPress 自带的搜索功能添加过滤只搜索文章的标题和结果中只有一个文章时自动跳转到该链接教程

2022年5月21日09:08:05CMS教程评论82字数 995阅读3分19秒阅读模式

教程开始:

WordPress 自带的搜索功能添加过滤只搜索文章的标题和结果中只有一个文章时自动跳转到该链接教程

如果想让 WordPress 自带的搜索功能只搜索文章标题,让搜索结果更加精确(其实WordPress 自带的搜索功能本来模糊查找就很弱),可以将下面的代码添加到当前主题functions.php中:

// 只搜索文章标题
function wpse_11826_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;
}
add_filter( 'posts_search', 'wpse_11826_search_by_title', 10, 2 );

WordPress搜索结果中只有一个文章时自动跳转到该链接

当访问者通过WordPress自带的搜索查找文章时,如果返回的结果只有一篇文章,可以直接跳转到这篇文章,从而提高用户体验。

同样将下面的代码添加到当前主题functions.php中

add_action('template_redirect', 'redirect_single_post');
function redirect_single_post() {
    if (is_search()) {
        global $wp_query;
        if ($wp_query->post_count == 1 && $wp_query->max_num_pages == 1) {
            wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
            exit;
        }
    }
}

去试试效果,不满意删除就行了。

admin
  • 如有侵权请联系本站删除,我们不提供免费技术支持,如链接失效请留言告知,本文属于用户投稿。
  • 转载请务必保留本文链接:https://www.zzwvps.com/306.html

发表评论