我可以(以及是否应该)从unctions.php更改登录URL吗?

时间:2020-05-16 作者:Zeth

What I\'m trying to do

<更改登录URLhttps://example.org/wp-loginhttps://example.org/mellonhttps://example.org/wp-login 重定向到404页

Considerations

如果我在谷歌上搜索它,那么我会发现couple of suggestions, 哪里/wp-admin/wp-login.php 已重命名/更改。这显然是一个糟糕的想法(原因:永远不要更改核心!+它将在更新WordPress时重置)。

我当前正在使用WP Cerber 其中有一个选项可以更改登录URL。但出于某种原因,该选项不起作用。

我知道很可能会找到一个插件来实现这一点。但我讨厌为简单的事情安装插件,以避免有大量插件。

我宁愿不在.htaccess-文件,因为我没有将其提交给我的代码响应。

可以从functions.php?

2 个回复
SO网友:Ujjawal Poonia

你应该更改默认的登录url,这样黑客就很难找到登录页面,这样对你来说就安全了。

下面是更改url的代码。


// Add rewrite rule and flush on plugin activation
register_activation_hook( __FILE__, \'NLURL_activate\' );
function NLURL_activate() {
    NLURL_rewrite();
    flush_rewrite_rules();
}

// Flush on plugin deactivation
register_deactivation_hook( __FILE__, \'NLURL_deactivate\' );
function NLURL_deactivate() {
    flush_rewrite_rules();
}

// Create new rewrite rule
add_action( \'init\', \'NLURL_rewrite\' );
function NLURL_rewrite() {
    add_rewrite_rule( \'login/?$\', \'wp-login.php\', \'top\' );
    add_rewrite_rule( \'register/?$\', \'wp-login.php?action=register\', \'top\' );
    add_rewrite_rule( \'forgot/?$\', \'wp-login.php?action=lostpassword\', \'top\' );
}


//register url fix
add_filter(\'register\',\'fix_register_url\');
function fix_register_url($link){
    return str_replace(site_url(\'wp-login.php?action=register\', \'login\'),site_url(\'register\', \'login\'),$link);
}

//login url fix
add_filter(\'login_url\',\'fix_login_url\');
function fix_login_url($link){
    return str_replace(site_url(\'wp-login.php\', \'login\'),site_url(\'login\', \'login\'),$link);
}

//forgot password url fix
add_filter(\'lostpassword_url\',\'fix_lostpass_url\');
function fix_lostpass_url($link){
    return str_replace(\'?action=lostpassword\',\'\',str_replace(network_site_url(\'wp-login.php\', \'login\'),site_url(\'forgot\', \'login\'),$link));
}

//Site URL hack to overwrite register url
add_filter(\'site_url\',\'fix_urls\',10,3);
function fix_urls($url, $path, $orig_scheme){
    if ($orig_scheme !== \'login\')
        return $url;
    if ($path == \'wp-login.php?action=register\')
        return site_url(\'register\', \'login\');

    return $url;
}

SO网友:rank

在没有插件的情况下更改登录url不是一个好主意,因为您需要处理WP核心文件。因此,更改登录url并不是你所说的“简单的事情”,而是相当复杂的。

我想有一个原因是WP向您展示了一种创建新登录表单的方法,但没有告诉您如何完全更改它。如果您感兴趣:https://codex.wordpress.org/Customizing_the_Login_Form#Make_a_Custom_Login_Page

Using a plugin is the safer way to change the login url of wordpress.

所以有一个很好的插件:https://wordpress.org/plugins/wps-hide-login/

它非常轻量级,并且只做您想要的事情:隐藏wp登录名和wp管理员,并使用您选择的名称。不要用不需要的东西来增加你的安装,而是要做好它的一次使用。

转到设置->通用,或者转到设置->WPS隐藏登录以更改登录url。

记住新的url或设置书签很重要,否则您将无法找到新的登录页面。

我知道你想为你的功能找到一个解决方案。php。我认为没有,我也建议使用插件,因为它将以更好、更安全的方式解决问题。

相关推荐

从5.2.0版开始不推荐使用LOGIN_Headertitle

朋友们,我有个问题。当我进入wordpress中的默认logn页面时,我看到了这个错误:Notice: login_headertitle is deprecated since version 5.2.0! Use login_headertext instead. Usage of the title attribute on the login logo is not recommended for accessibility reasons. Use the link text instead.