WordPress搜索结果中只有一篇文章时自动打开该文章

当我们搜索文章时,如果搜索结果中只有一篇文章,我们需要点击一下才能看到这篇文章,现在我们想让只有一篇文章时自动打开这篇文章,从而提高用户体验,实现方法:

打开当前模板文件夹里面的functions.php 文件,加入下面代码即可

/* WordPress搜索结果中只有一篇文章时自动打开该文章 */
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;
        }
    }
}

 

如果列表里只有一篇文章时,也想让用户访问该列表时自动打开该文章,打开当前模板里面的functions.php 文件,加入下面代码;

/* 分类列表里只有一篇文章时直接跳转到该文章具体页面 */
function stf_redirect_to_post(){
	global $wp_query;
	// If there is one post on archive page
	if( is_archive() && $wp_query->post_count == 1 ){
		// Setup post data
		the_post(); 
		// Get permalink
		$post_url = get_permalink();
		// Redirect to post page
		wp_redirect( $post_url );
	}	
}
add_action('template_redirect', 'stf_redirect_to_post');

最近网站被人刷的搜索,百度收录了。别人通过百度点击进来,是一个无搜索内容的页面,现在我想让点击这个链接进来直接转向首页,综合上面两个段代码,终于成功了。

/* WordPress搜索结果中无内容时自动跳转到网站首页 */
add_action('template_redirect', 'redirect_single_post');
function redirect_single_post() {
    if (is_search()) {
        global $wp_query;
        if ($wp_query->post_count == 0 && $wp_query->max_num_pages == 0) {
            wp_redirect( home_url() );
            exit;
        }
    }
}

但是这段代码不能和第一段代码同时使用,因为里面有相同的参数,会出错。

经测试,把两段代码混合起来使用就正常了。也就是当搜索结果只有一条内容时,自动打开该条内容页面,搜索结果有N条内容时,显示正常搜索页面,搜索结果无内容时,刚自动转向首页。

代码如下:

/* WordPress搜索结果 */
add_action('template_redirect', 'redirect_single_post');
function redirect_single_post() {
    if (is_search()) {
        global $wp_query;
        if ($wp_query->post_count == 0 && $wp_query->max_num_pages == 0) {
            wp_redirect( home_url() );//搜索结果没内容时,自动转向首页。
            exit;
        }
        if ($wp_query->post_count == 1 && $wp_query->max_num_pages == 1) {
            wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );//搜索结果只有一条时,自动打开该条内容。
            exit;
        }
    }
}

 

THE END