最近访客
suxiaosu的头像-狐狸库
suxiaosu
百度未收录

WordPress如何实现登录查看整个网页?

有些站长希望使用WordPress实现当访客登录后查看网站的所有文章,这种方法如何实现呢?其实很简单,可以通过以下的代码来实现这个功能。

有两个场景:

1.当用户访问网站,直接跳转到登录页面。

2.当用户访问网站跳转到指定的页面(比如说一个提示页)

第一个场景,当用户访问网站跳转到登录页面实现代码(没有登录)

 add_action( \'wp\', \'login_access\' );
 function login_access() {
 global $pagenow;
 if( !is_user_logged_in() && $pagenow != \'wp-login.php\' )
 auth_redirect();
 }

将这个代码放在你当前使用主题的函数模板functions.php中 即可实现该功能。

第二个场景,未登陆跳转到指定的页面

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 的插件来实现这个功能。

温馨提示: 本文最后更新于2022/10/20 04:41:49。若文章内容或图片失效,请 留言联系站长反馈!
!
也想出现在这里? 联系我们
创意广告
© 版权声明
THE END
点赞0赞赏 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容