如何在重定向wp-login.php的同时仍允许注销和其他操作?

时间:2019-03-08 作者:JHM

我的目标:重定向前往wp登录的访问者。php(或尝试注册的用户)访问主页。但仍允许wp登录。php在注销、丢失密码和重置密码等特定操作期间运行。

我们在另一个问题中使用了代码,使我们几乎达到了目标。(How to use wp-login.php page only for logout?)

我们的修改添加了lostpassword和密码重置操作。这就是我们现在所拥有的:

// Allow logout and lost password actions but redirect to the home page for all other wp-login.php requests

add_action( \'login_head\', \'redirect_home_on_login_form\' );
function redirect_home_on_login_form() {
       if ( ! isset( $_REQUEST[\'action\'] ) || (\'logout\' !== $_REQUEST[\'action\']  && $_REQUEST[\'action\'] !== \'lostpassword\' && $_REQUEST[\'action\'] !== \'rp\') ) {
        wp_redirect( home_url( \'/\' ) );
        exit();
       }
}

// wp_logout fires after the user\'s login cookies have been removed
add_action( \'wp_logout\', \'redirect_home_on_logout\' );
function redirect_home_on_logout() {
    wp_redirect( home_url( \'/\' ) );
    exit();
}
问题:此代码允许执行所需的操作。但它不会在wp登录时重定向其他访问者。php访问主页。相反,它给了我们一个空白的灰色页面——加载css,但页面上没有其他内容。

问题似乎是使用login\\u head,因为我们需要它更早地启动。

我们尝试使用login\\u init添加\\u操作,但这会导致登录本身无法处理。

我们尝试使用login\\u init执行do\\u操作,它允许我们登录并使用与wp login关联的操作。php,但它也不会重定向wp登录。php——默认情况下,表单只按其应该的方式加载。

如果您有任何关于如何实现这一目标的想法,我们将不胜感激。虽然没有加载表单的灰色屏幕至少可以阻止暴力攻击,但我宁愿让普通访问者留在网站上,如果他们碰巧出于任何原因出现在那里。

谢谢

1 个回复
SO网友:JHM

显然,经过两天的努力,我所需要做的就是在这里发布,然后解决方案就会出现,这样我就会觉得自己像个白痴

我可以调整这个问题的回答(Disable Or Redirect WP-login.php) 最后,让它发挥作用。

如果其他人遇到同样的问题,这就是我阻止登录和注册页面,但仍然允许注销、丢失密码请求和密码重置表单工作的原因。

add_action(\'init\',\'custom_login\');

function custom_login(){
 global $pagenow;
 if( \'wp-login.php\' == $pagenow && $_GET[\'action\']!="logout" && $_GET[\'action\']!="lostpassword" && $_GET[\'action\']!="rp") {
  wp_redirect( home_url( \'/\' ) );
 }
}

相关推荐

如何在自定义的PHP文件中使用GET_BLOGINO(‘ADMIN_Email’)?

我如何使用get_bloginfo(\'admin_email\') 在位于父主题根目录中的自定义PHP文件中?我已经分别构建了一个自定义表单和一个PHP邮件脚本,但现在我想用密件抄送将表单数据发送到WP Admin电子邮件地址。 $headers = \"MIME-Version: 1.0\" . \"\\r\\n\"; $headers .= \"Content-type:text/html;charset=UTF-8\" . \"\\r\\n\"; $heade