WordPress全站登录可见/分类登录可见

把下面这句代码,加到Wordpress主题到头部或者尾部文件都行:

header.php文件加到:</head>前面,footer.php文件加到:</body>前面就行。

<?php if(!is_user_logged_in()){wp_redirect('https://www.qq.com'); exit;}?> 

至于跳转的网站,自己改。

如果只是让某个分类可见封面而不是具体内容,可以使用插件My Private Site,把需要直接就能看见的页面加到排除对象就行,不过这个插件好像只能设置一个页面。

如果是可看分类下的文章标题封面,而不能看见分类下文章具体内容,也可以修改文章页面的代码single.php。

但是这个页面很多主题都自己修改过,所以代码并不通用。

以下只是参考,主要是看the_content或get_template_part这两段。

<?php 
if( in_category( array( 'fenlei', 'fenlei1' ) ) ) {
function is_se() {
	$u_agent = $_SERVER['HTTP_USER_AGENT'];
	$spiders = '/(spider|bot|slurp|Mediapartners|crawl)/i';
	if ( preg_match($spiders, $u_agent) )
		return 1;
	else
		return 0;
}
if(is_user_logged_in() || is_se())
		the_content('Read more...');
	else
		echo '本文需要登录才能查看';
}
else {
	the_content('Read more...');
}
?>

第二种方法

将以下代码添加至主题的functions.php中的<?php 下即可:

ob_start();
function yincangwenzhang( $query ) {
	$delete_cat_yc=array('-72','-4','-5');//上下数字需要一直代表你分类的id
	$delete_cat=array('72','4','5');
	if(!is_user_logged_in()){
		//当用户未登录访问文章页面跳转404
		if(is_single()&&in_category($delete_cat)){
			wp_safe_redirect(home_url().'/404');
    		exit;
		}
	//在首页和其他页面隐藏文章
	//$query->is_home()||$query->is_search()||$query->is_archive()
	//上行代码作用同下,不过不知道是什么原因作者页面的文章没有隐藏,带参数也没有用,所以用下面的吧
	if(get_current_user_id()==0){//用户未登录ID是为0的,隐藏文章
	$query->set( 'cat', $delete_cat_yc);
		}
	}return $query;
}
add_filter( 'pre_get_posts', 'yincangwenzhang' );

提示:get_current_user_id();函数就是获取用户的ID

相关文章