我自己建网站的时候,往往会有下面这两种情况不想要别人查看网站内容。1、纯粹的个人博客,不希望被别人查看。2、某些内部网站,不希望不相关的人访问。3、特殊资源站。
那么如果你是用WordPress搭建的网站,就可以很简单的通过WordPress插件实现WordPress登录可见的功能。
下面是奶爸给大家分享的几款实现wordpress需要注册才能观看的插件。
Registered Users Only
Registered Users Only这款插件是在WP建站吧那看到的,插件功能很简单,安装后启用,在没有注册登录的情况下,都会重定向到登录界面。
如果你希望开放注册,那么则勾选允许任何人注册,如果你想访客临时可以访问网站内容,那么就勾选访客模式。
Force Login
Force Login更加简单,下载启用后直接开启全站需要登录查看功能,都没有单独的设置页面,启用插件就需要登录查看,禁用插件就不需要登录查看网站内容。
My Private Site
我的私密网站,My Private Site这款插件更加利于资源营销类网站使用,因为它除了可以重定向未登录用户到登录页面,还可以自定义登录界面、自定义注册界面。
除此之外,My Private Site最强大的地方在于可以排除页面,你可以设置首页无需登录即可查看,还可以增加不需要登录即可查看的页面。
同时,如果开启了需要登录才可查看页面,还支持登录后跳转到登录前的页面。
My Private Site简单使用方法介绍:
Private Site 勾选,则开启登录访问。
Custom Login 是自定义登陆页面的选项。
Visible Exclusions 是排除页面的选项。
按需显示隐藏
如果你想自己设置显示特定内容和隐藏特定内容的方法,那么可以使用Wicked Block Conditions
用代码的话就下面这个
add_shortcode('hide','loginvisible'); function loginvisible($atts,$content=null){ if(is_user_logged_in() && !is_null($content) && !is_feed()) return $content; return ''; }
然后文章里面用[hide]和[/hide]包住隐藏内容就可以了。
如果你只是想要简单的从网站首页或者分类页隐藏文章,那么可以参考:WordPress在网站首页或分类页隐藏特定文章的方法
输入密码可见
如果想实现WordPress文章或者分类或者整个网站需要输入密码才能查看访问,那么可以参见这篇文章:3款WordPress需要密码才能访问网站的插件_密码查看内容
使用代码隐藏分类登录可见
//template_redirect动作钩子是一定会执行的,所以用这个钩子对全站有效 add_action( 'template_redirect', 'ashuwp_show_only_login', 0 ); function ashuwp_show_only_login(){ //判断登录,about页面就允许访问 if( !is_page('about') && !is_user_logged_in() ){ auth_redirect(); //跳转到登录页面 exit(); } }
如果是分类目录要登录可见,就用下面的代码。
// 首页和指定分类文章可以访问 add_action( 'template_redirect', 'ashuwp_show_only_login', 0 ); function ashuwp_show_only_login(){ //判断登录,只允许访问ID为3和2的分类文章 if( !in_category( array( '3','2' ) ) && !is_home() && !is_user_logged_in() ){ auth_redirect(); //跳转到登录页面 exit(); } }
!in_category前面的感叹号代表的是不是,意思是说如果不是id为3和2的分类,以及不是首页,没有登录,那么就跳转到登录页面。
代码添加到主题函数模板functions.php中生效。
注意的是,in_category只支持一级目录,如果有子目录,需要全部列出,或者加上下面的判断。
if ( ! function_exists( 'post_is_in_descendant_category' ) ) { function post_is_in_descendant_category( $cats, $_post = null ) { foreach ( (array) $cats as $cat ) { // get_term_children() accepts integer ID only $descendants = get_term_children( (int) $cat, 'category' ); if ( $descendants && in_category( $descendants, $_post ) ) return true; } return false; } }
然后这样调用
<?php if ( in_category( 'fruit' ) || post_is_in_descendant_category( 'fruit' ) ) { // These are all fruits… } ?>
终极插件
上面的方法一一测试了都不满意?给你推荐一款奶爸目前正在使用的解决方案,一款功能强大的判断插件。
[vk-content]
这款名为Restrict User Access – Membership Plugin with Force的插件,非常适合需要多重判断的又不会自己改写代码的朋友。
可以添加多个判断条件,然后在Members设置用户组,Capabilities里面设置权限,然后保存即可生效。
[/vk-content]