限制访问wp-login.php

时间:2011-08-11 作者:booota

在我的主题侧栏中有一个硬编码的登录/注册/密码丢失表单。我正在为“redirect\\u to”使用隐藏输入,它工作正常。但是,当我按下登录按钮而不输入任何内容时,或者当出现错误时,它会重定向到wp login。php页面。

我不想发生这种事。如果发生错误,它应该显示在当前位置。我怎样才能做到这一点。

注意:注销功能也需要相同的功能。基本上,我不想显示wp登录。php页面,任何人都可以不惜任何代价。

2 个回复
SO网友:chrisguitarguy

行动wp_login_failed 当由于错误的用户名/密码组合导致登录失败时激发。所以这是一个很好的开始。这是一个超级简单的示例,只需重定向到主页。

<?php
add_action( \'wp_login_failed\', \'wpse25628_login_failed\', 10, 1 );
/**
 * Catches all failed logins and redirect them to the 
 * websites home page.
 */
function wpse25628_login_failed( $username )
{
    /*
    May want to do something here to give the user feedback
    for instance call `global $user;`, which will be a
    wp_error object, you could append the code as a 
    $_GET variable and adjust your front end according to the
    error message
    */
    wp_redirect(
        home_url(),
        302
    );
    exit();
}
当然,还有wp_logout 还有钩子!也许你在这里给人们发一个感谢页面,而不是主页。

<?php
add_action( \'wp_logout\', \'wpse25628_catch_logout\' );
/**
 * When a user logs out, send them back to the home page
 */
function wpse25628_catch_logout()
{
    wp_redirect(
        home_url(),
        302
    );
    exit();
}
不幸的是wp_login_failed 如果用户名或密码为空,则不会触发钩子。同样令人遗憾的是,当发生这种情况时,缺少被触发的钩子。使用javascript在客户端验证这类内容可能更好。这里有一个简单的例子。

jQuery(document).ready(function(){
    jQuery(\'#loginform\').submit(function(e){
        var errors;
        jQuery(\'#loginform input\').each(function(){
            var val = jQuery(this).val()
            if( ! val )
            {   
                errors = true;
            }
        });
        if( errors )
        {
            e.preventDefault();
        }
    });
});

SO网友:user472179

您可以通过以下方式重定向wp登录和其他默认页面:

add_action(\'plugins_loaded\', \'myAction\');
function wpSimpleUserSetup() {
    if (in_array($_SERVER[\'REQUEST_URI\'], array(\'/wp-login.php\', \'wp-login.php?action=register\'))) {
        wp_redirect(wp_login_url());
        exit;
    }
}
此外,wp\\u login\\u url()函数是可插入的,因此您可以使用自己的:

function myLoginUrl( $redirect = \'\', $force_reauth = false ) {
    return $custom_url;
}
add_filter( \'login_url\', \'myLoginUrl\', 9999 );

结束

相关推荐

add a class when login

我将此代码添加到index.php.<div class=\"Div1\"></div>. 然后在Div1. 所以当我登录wordpress时。管理员导航将向站点正文下推一些空格。因此,事件显示不正常。现在,我想添加一个class 到<div class=\"Div1\"> 登录时。有没有办法做到这一点。