隐藏 wp-login.php 作为登录并将其重定向到自定义登录页面

问题描述 投票:0回答:5

我试图在我的网站上隐藏 wp-login.php,所以我安装了插件重命名 wp-login.php,我将其重命名为登录。现在我想将其重定向到我的自定义登录页面,以便完全隐藏 WordPress 的默认登录表单。有办法做到这一点吗?我已经尝试过重定向插件和下面的代码,但它只支持 wp-login.php 而不是我的新登录网址:

function redirect_login_page(){

// Store for checking if this page equals wp-login.php
$page_viewed = basename( $_SERVER['REQUEST_URI'] );

// permalink to the custom login page
$login_page  = get_permalink( '10' );

if( $page_viewed == "wp-login.php" ) {
    wp_redirect( $login_page );
    exit();
}
}

有没有办法在不实际更改 WordPress 基本文件的情况下做到这一点?

wordpress wordpress-login
5个回答
19
投票

试试这个

add_action('init','custom_login');
function custom_login(){
 global $pagenow;
 if( 'wp-login.php' == $pagenow ) {
  wp_redirect('http://localhost/wordpresstest/blog/');
  exit();
 }
}

19
投票

试试这个

// Hook the appropriate WordPress action
add_action('init', 'prevent_wp_login');

function prevent_wp_login() {
    // WP tracks the current page - global the variable to access it
    global $pagenow;
    // Check if a $_GET['action'] is set, and if so, load it into $action variable
    $action = (isset($_GET['action'])) ? $_GET['action'] : '';
    // Check if we're on the login page, and ensure the action is not 'logout'
    if( $pagenow == 'wp-login.php' && ( ! $action || ( $action && ! in_array($action, array('logout', 'lostpassword', 'rp', 'resetpass'))))) {
        // Load the home page url
        $page = get_bloginfo('url');
        // Redirect to the home page
        wp_redirect($page);
        // Stop execution to prevent the page loading for any reason
        exit();
    }
}

0
投票

这适用于登录,但不适用于注销。 如果您要注销,它会将您重定向回登录页面,而不会实际注销您,因为注销的 URL 参数包括 /wp-login.php/

我发现这是一个更好的解决方案:

// Redirect from /wp-login.php/ to /login/ with ability to logout & redirect 
add_action('init', 'custom_login');
function custom_login() {
global $pagenow;
if ($pagenow === 'wp-login.php' && empty($_REQUEST['action'])) {
    wp_redirect('https://example.com/login/');
    exit();
} elseif ($pagenow === 'wp-login.php?action=logout' && $_REQUEST['action'] === 'logout') {
    wp_redirect('https://example.com/');
    exit();
}
}

0
投票

这个效果很好,很完美。

add_action('init', 'custom_login');

function custom_login(){
    global $pagenow;
    
    if ('wp-login.php' == $pagenow) {
        wp_redirect('http://localhost/wordpresstest/blog/');
        // No need for the exit() statement here
    }
}

通过删除 exit() 语句,代码允许 wp-login.php 脚本在重定向后继续处理登录操作。 确保将 http://localhost/wordpresstest/blog/ 替换为您的自定义登录 ul


-3
投票

您可以使用名为 All In One WP Security & Firewall 的插件通过自定义管理员登录页面实现访问 WordPress 管理员的结果。

多合一 WordPress 安全插件将把您的网站安全提升到一个全新的水平。该插件由专家设计和编写,易于使用和理解。它通过检查漏洞以及实施和执行最新推荐的 WordPress 安全实践和技术来降低安全风险。

您的要求:

此插件能够隐藏管理员登录页面。重命名您的 WordPress 登录页面 URL,以便机器人和黑客无法访问您真实的 WordPress 登录 URL。此功能允许您将默认登录页面(wp-login.php)更改为您配置的内容。

更多功能请参考插件代码

© www.soinside.com 2019 - 2024. All rights reserved.