In my opinion if you use plugin than it will find security holes in your WordPress.
You can use the following steps to create your own URL of login either admin or else as follows:
1.) Add constant to wp-confing.php
define('WP_ADMIN_DIR', 'secret-folder');
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . WP_ADMIN_DIR);
2.) Add below filter to functions.php
add_filter('site_url', 'wpadmin_filter', 10, 3);
function wpadmin_filter( $url, $path, $orig_scheme ) {
$old = array( "/(wp-admin)/");
$admin_dir = WP_ADMIN_DIR;
$new = array($admin_dir);
return preg_replace( $old, $new, $url, 1);
}
3.) Add below line to .htaccess file if you are using Apache
RewriteRule ^secret-folder/(.*) wp-admin/$1?%{QUERY_STRING} [L]
Edit the Nginx virtual host file and place the following:
location ~* /admin/ {
rewrite ^/admin/(.*) /wp-admin/$1 last;
}
Done...!!!
Now your admin URL will be like: http://www.yourdomain.com/secret-folder/
and the below code will restrict the URL: site.com/wp-admin
add_action('login_form','redirect_wp_admin');
function redirect_wp_admin(){
$redirect_to = $_SERVER['REQUEST_URI'];
if(count($_REQUEST)> 0 && array_key_exists('redirect_to', $_REQUEST)){
$redirect_to = $_REQUEST['redirect_to'];
$check_wp_admin = stristr($redirect_to, 'wp-admin');
if($check_wp_admin){
wp_safe_redirect( '404.php' );
}
}
}
Edited:
Edit the Nginx virtual host file and place the following:
location ~* /admin/ {
rewrite ^/admin/(.*) /wp-admin/$1 last;
}
In case if you want to redirect url from index.php to back on admin
server {
index index.php;
if ($request_uri ~* "^(.*/)index\.php$") {
return 301 $1;
}
location = /admin/index.php {
return 301 $scheme://www.example.com/admin/;
}
}
Another benefit from doing it this way is that nginx
does a return faster than a rewrite.