1. 前言
因为我的WordPress是用于团队存放文档使用,如果全部归为私密则不方便查看,而且也没有开放注册,所以需要禁止未登陆的用户查看所有文章。
翻阅了很多热门的方案,最多的是在header.php调用functions.php的函数,但是不知道为什么一直无法调用。
后来翻到了 wpon.cn 的方案,可以实现,在这我进行收藏和优化。
原文章地址:https://www.wpon.cn/8873.html
2. 实现
进入WordPress后台,左侧的菜单栏中选“外观”-“主题编辑器”,然后在右侧找到“函数模板(functions.php)”。
将以下代码插入到“<?php”和第一个function函数中间,保证在加载的时候能第一个读取到钩子函数定义的检查登陆函数。
否则会导致页面加载一部分后再跳到登陆页面。如下代码可以在游客进入主页之前就跳转到登陆页面。
//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();
}
}
里面涉及到两个重要的WordPress内置函数:
is_user_logged_in() :这是判断是否用户登陆,已经登陆返回true,未登陆返回false。
auth_redirect() :这个函数会指向登陆页面,自动跳转到登陆页面。