如果用户登录了WordPress,我们如何将用户从登录页面重定向到主页?

时间:2021-02-27 作者:Tornike Shavishvili

我刚刚在我的计算机上本地安装了WordPress,并成功运行了网站。我想实现以下目标:当用户登录时,尝试访问wp登录。php或注册页面,它应该自动重定向到主页。

我在网上花了几个小时,但没有找到解决方案,也找不到合适的WordPress插件。

我的问题是:为什么WordPress的功能是这样的?我们如何才能尽可能简单地改变这种行为?

非常感谢。

2 个回复
最合适的回答,由SO网友:Patriot 整理而成

您可以通过$pagenow全局变量检查正在加载的当前页面。登录和注册都是通过wp登录处理的。php。将其添加到函数中。主题的php应该可以工作:

<?php

add_action(\'init\', function () {

    if ($GLOBALS[\'pagenow\'] === \'wp-login.php\' && is_user_logged_in() && (!isset($_GET[\'action\']) || $_GET[\'action\'] !== \'logout\')) {

        wp_redirect(home_url());
        exit;

    }

});
EDIT: 添加了一个允许注销的检查,并明确了将此代码放在何处。

SO网友:Tornike Shavishvili

我修改了@Patriot代码。

我能够通过以下代码实现所需的功能:我将此代码添加到\\wp-includes\\functions.php 在文件的和处。

它不像我所希望的那么干净,但它很管用。

如果有人发现此方法存在任何可能的问题,请通知我们

add_action(\'init\', function() {

    if ($GLOBALS[\'pagenow\'] === \'wp-login.php\' && is_user_logged_in()) {
        
        $defLoginPageActions = array(
            //\'confirm_admin_email\',
            //\'postpass\',
            \'logout\',
            //\'lostpassword\',
            //\'retrievepassword\',
            //\'resetpass\',
            //\'rp\',
            //\'register\',
            //\'checkemail\',
            //\'confirmaction\',
            //\'login\',
            WP_Recovery_Mode_Link_Service::LOGIN_ACTION_ENTERED,
        );
        $loginPageAction = isset( $_REQUEST[\'action\'] ) ? $_REQUEST[\'action\'] : \'\';

         
        if(!in_array( $loginPageAction, $defLoginPageActions)){  
            wp_redirect(home_url());
            exit;
        } 

    }
 
});

相关推荐

Can't login to my own website

自2016年3月以来,我有一个WordPress网站,但几年前我失去了登录自己网站的能力。我使用的是2616主题,因此在屏幕底部有一个小面板,我可以单击并登录。当我这样做时,会出现“登录”窗口,我将信息放入字段,然后登录,但会被踢回我的网站并注销。如果我加上;wp登录。php“;最后,它会将我发送给wp管理员,但如果我现在访问我的网站,我仍然会注销。这太烦人了,我真的很想尝试修复它,所以如果有人知道到底发生了什么,我会非常感激!