我的目标:重定向前往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——默认情况下,表单只按其应该的方式加载。
如果您有任何关于如何实现这一目标的想法,我们将不胜感激。虽然没有加载表单的灰色屏幕至少可以阻止暴力攻击,但我宁愿让普通访问者留在网站上,如果他们碰巧出于任何原因出现在那里。
谢谢