WordPress如何实现必须强制输入密码登录才能访问站点首页网站
有些站长建立的WordPress站点比较私密不对外公开,或者只适合对注册用户公开,所以就想要实现用户访问站点首页或其他页面就强制用户登录,只有成功登录后才能正常访问和浏览站点内容。其实,想要实现这个目的还是比较简单的,可以通过添加相应代码到当前主题的functions.php文件实现,也可以通过安装插件来实现。
方法一:通过纯代码实现,未登录访问网站直接跳转到默认登录页面。
将以下代码添加到当前主题的 functions.php 文件中即可实现用户登录后才能访问,不登录就自动跳转到登录页面。
add_action(
'wp'
,
'login_access'
);
function
login_access() {
global
$pagenow
;
if
( !is_user_logged_in() &&
$pagenow
!=
'wp-login.php'
)
auth_redirect();
}
代码二 未登录访问网站,可以302跳转到自定义的页面
add_action(
'template_redirect'
,
'zm_force_login'
);
function
zm_force_login() {
// 判断登录
if
( ! is_user_logged_in() ) {
// 判断HTTPS
$schema
= isset(
$_SERVER
[
'HTTPS'
] ) &&
'on'
===
$_SERVER
[
'HTTPS'
] ?
'https://'
:
'http://'
;
// 判断站内链接
$url
=
$schema
.
$_SERVER
[
'HTTP_HOST'
] .
$_SERVER
[
'REQUEST_URI'
];
// 添加白名单
$allowed
= apply_filters_deprecated(
'zm_force_login_whitelist'
,
array
(
array
(
'允许访问的链接1'
,
'允许访问链接2'
) ),
'1.0'
,
'zm_force_login_bypass'
);
$bypass
= apply_filters(
'zm_force_login_bypass'
, in_array(
$url
,
$allowed
),
$url
);
if
( preg_replace(
'/\?.*/'
,
''
,
$url
) !== preg_replace(
'/\?.*/'
,
''
, wp_login_url() ) && !
$bypass
) {
// 防止缓存
nocache_headers();
// 跳转的页面链接
$page
=
'跳转到的页面链接'
;
// 执行302跳转
wp_safe_redirect(
$page
, 302 );
// 跳转到默认登录页面
// wp_safe_redirect( wp_login_url(), 302 );
exit
;
}
}
}
方法二:安装Registered Users Only插件,进入网站后台,点击插件,安装插件,输入Registered Users Only搜索插件,安装,启用即可。
1.如果无法在后台直接安装就前往WordPress官方插件页面Registered Users Only中下载,然后在后台 >> 插件 >> 安装插件 >> 点击【上传插件】>> 点击【选择文件】按钮后选择刚才下载的插件安装包 >> 点击【现在安装】按钮 >> 成功安装后点击【启用插件】按钮,可在本地下载,下载地址:点击下载
WordPress的这款Registered Users Only插件老古觉得非常好,成功安装并启用后即可使用,无需任何设置就可以加密我们站点的前台内容,只有成功登录的用户才能访问我们的站点内容。如果不是登录状态访问我们的站点内容就会自动跳转到登录页面,并提示需要登录才能访问。
效果图:↓
方法三:安装Force Login插件,进入网站后台,点击插件,安装插件,输入Force Login搜索插件,安装,启用即可。
如果无法在后台直接安装就前往WordPress官方插件页面Force Login中下载,然后在后台 >> 插件 >> 安装插件 >> 点击【上传插件】>> 点击【选择文件】按钮后选择刚才下载的插件安装包 >> 点击【现在安装】按钮 >> 成功安装后点击【启用插件】按钮。可在本地下载,下载地址:点击下载
WordPress的这款Force Login插件使用非常简单,只需要成功安装并启用即可实现WordPress整站都需要登录后才能访问,而且还允许我们站长为指定的某些文章或页面可以不用登录即可访问。