WordPress开启维护模式时如何排除wp-login.php登录页面
WordPress自定义维护模式排除登录页面解决方案
你只需要在原有触发维护模式的判断逻辑中,新增WordPress自带的登录页面判断函数is_login()做排除即可,修改后的完整代码如下:
///////////// Wordpress Maintenance Mode /////////// function maintenance_mode() { $context = Timber::get_context(); Timber::render('maintenance.twig', $context); die(); } $config = get_field('website', 'option'); if($config["status"]) { add_filter( 'wp_die_handler', '_custom_wp_die_handler' ); }else { // 新增!is_login()排除登录页,三个条件同时满足才触发维护模式:未登录、不在后台、不是登录页 if(!is_user_logged_in() && !is_admin() && !is_login()) { maintenance_mode(); } } function _custom_wp_die_handler( $message, $title = '', $args = array() ) { maintenance_mode(); }
逻辑说明
is_login()是WordPress核心自带的函数,会自动判断当前访问的是否为wp-login.php登录页面,无需额外定义- 调整后未登录的访客访问前台页面会触发维护模式,访问登录页和后台不受影响,登录后可正常访问全站内容
- 如果你的站点自定义了登录地址,只需要将
!is_login()替换为对应自定义登录页的路径判断即可,比如判断当前请求URI是否包含你自定义的登录路径字符串
内容的提问来源于stack exchange,提问作者ShrockCo
相关产品推荐
相关产品推荐

