flush_rules(); } } // Prepare settings variables function init_settings() { register_setting('aelurl_settings', 'aelurl_login_input', array('AELURL', 'parse_url')); register_setting('aelurl_settings', 'aelurl_login'); register_setting('aelurl_settings', 'aelurl_register_input', array('AELURL', 'parse_url')); register_setting('aelurl_settings', 'aelurl_register'); register_setting('aelurl_settings', 'aelurl_forgot_input', array('AELURL', 'parse_url')); register_setting('aelurl_settings', 'aelurl_forgot'); register_setting('aelurl_settings', 'aelurl_htaccess_original'); } // Execute function run() { if ('true' == @$_REQUEST['settings-updated']) { self::htaccess_reload(); } self::fix_urls(); } // Register admin menu function wp_menu() { if (current_user_can("administrator")) { add_submenu_page('options-general.php', 'Aspexi Easy Login URL', 'Easy Login URL', 'administrator', /* __FILE__ */ 'aelurl', array('AELURL', 'backend')); } } // Update rewrite rules function htaccess($rules) { // Backup original .htaccess if (!strlen(get_option('aelurl_htaccess_original'))) { update_option('aelurl_htaccess_original', $rules); } // TODO: change to query vars else if ('true' == @$_GET['reset'] && 'true' != @$_REQUEST['settings-updated']) { $rules = get_option('aelurl_htaccess_original'); return $rules; } $new_rules = ''; // Update rules $login = get_option('aelurl_login_input'); if (get_option('aelurl_login') == 'on' && strlen($login)) { $new_rules .= "\n# ASPEXI Easy Login URL - LOGIN\n"; $new_rules .= "RewriteEngine on\n"; $new_rules .= "RewriteRule ^$login$ wp-login.php [NC,L]\n"; } $register = get_option('aelurl_register_input'); if (get_option('aelurl_register') == 'on' && strlen($register)) { $new_rules .= "\n# ASPEXI Easy Login URL - REGISTER\n"; $new_rules .= "RewriteEngine on\n"; $new_rules .= "RewriteRule ^$register$ wp-login.php?action=register [NC,L]\n"; } $forgot = get_option('aelurl_forgot_input'); if (get_option('aelurl_forgot') == 'on' && strlen($forgot)) { $new_rules .= "\n# ASPEXI Easy Login URL - FORGOT PASSWORD\n"; $new_rules .= "RewriteEngine on\n"; $new_rules .= "RewriteRule ^$forgot$ wp-login.php?action=lostpassword [NC,L]\n"; } return $new_rules . $rules; } // Flush rules function htaccess_reload() { global $wp_rewrite; $wp_rewrite->flush_rules(); } /*function rewrite_reload($wp_rewrite) { global $wp_rewrite; $wp_rewrite->mod_rewrite_rules(); return $wp_rewrite; }*/ /*function rewrite_reload_array($in) { return $in; }*/ // Parse strings from inputs function parse_url($in) { $in = trim(self::urify($in)); return $in; } // Parse strings from inputs - helper function urify($str) { return str_replace(" ", "-", trim(ereg_replace("[^A-Za-z0-9[:space:]-]", "", $str))); } // Fix urls function fix_urls() { // Login url $login = get_option('aelurl_login_input'); if (get_option('aelurl_login') == 'on' && strlen($login)) { add_filter('login_url', 'fix_login'); global $aelurl_login; $aelurl_login = $login; if (!function_exists('fix_login')) { function fix_login($url) { global $aelurl_login; return str_replace(site_url('wp-login.php', 'login'), site_url($aelurl_login, 'login'), $url); } } } // Register url $register = get_option('aelurl_register_input'); if (get_option('aelurl_register') == 'on' && strlen($register)) { add_filter('register', 'fix_register'); global $aelurl_register; $aelurl_register = $register; if (!function_exists('fix_register')) { function fix_register($url) { global $aelurl_register; return str_replace(site_url('wp-login.php?action=register', 'login'), site_url($aelurl_register, 'login'), $url); } } add_filter('site_url', 'fix_register2', 10, 3); if (!function_exists('fix_register2')) { function fix_register2($url, $path, $orig_scheme) { global $aelurl_register; if ($orig_scheme !== 'login') return $url; if ($path == 'wp-login.php?action=register') return site_url($aelurl_register, 'login'); return $url; } } } // Forgot url $forgot = get_option('aelurl_forgot_input'); if (get_option('aelurl_forgot') == 'on' && strlen($forgot)) { add_filter('lostpassword_url', 'fix_forgot'); global $aelurl_forgot; $aelurl_forgot = $forgot; if (!function_exists('fix_forgot')) { function fix_forgot($url) { global $aelurl_forgot; return str_replace('?action=lostpassword', '', str_replace(network_site_url('wp-login.php', 'login'), site_url($aelurl_forgot, 'login'), $url)); } } } } // Include common script function scripts() { wp_enqueue_script('common'); } // Get current .htaccess file preview function htaccess_preview() { $hf = get_home_path() . '.htaccess'; if (file_exists($hf)) { $handle = fopen($hf, "r"); if ($handle) { $contents = nl2br(fread($handle, filesize($hf))); return $contents; } else return 'Fatal error: cannot access .htaccess file!'; fclose($handle); } else return 'Fatal error: cannot access .htaccess file!'; } // Prepare reset url function reset_url() { $q = explode('&', $_SERVER['QUERY_STRING']); $purl = 'http' . ((!empty($_SERVER['HTTPS'])) ? 's' : '') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '?' . $q[0] . '&reset=true'; return $purl; } // Check if user reset function reset_maybe() { // TODO: change to query vars if ('true' == @$_GET['reset'] && 'true' != @$_REQUEST['settings-updated']) { delete_option('aelurl_login_input'); delete_option('aelurl_login'); delete_option('aelurl_register_input'); delete_option('aelurl_register'); delete_option('aelurl_forgot_input'); delete_option('aelurl_forgot'); self::htaccess_reload(); self::fix_urls(); echo '

Aspexi Easy Login URL has been reset. Original .htaccess file has been restored.

'; unset($_GET['reset']); } } // Output configuration function backend() { if (!current_user_can('manage_options')) { wp_die(__('You do not have sufficient permissions to access this page.')); } if (function_exists('is_multisite')) if (is_multisite()) { echo '

Aspexi Easy Login URL has not been tested on multisite. Plugin might not work. Use at your own risk!

'; } if (!get_option('permalink_structure')) { echo '

Aspexi Easy Login URL is not active. You must enable Permalink before it can work.

'; } self::reset_maybe(); { ?>

Aspexi Easy Login URL Options

Settings

Login URL
I.e. use /login instead of /wp-login.php

checked name="aelurl_login" /> Enable Login redirection

Register URL
I.e. use /register instead of /wp-login.php?action=register

checked name="aelurl_register" /> Enable Register redirection

Frogot Password URL
I.e. use /forgot instead of /wp-login.php?action=lostpassword

checked name="aelurl_forgot" /> Enable Forgot Password redirection

Advanced

Current .htaccess preview:

Backed-up .htaccess preview:

Restore original .htaccess file and reset configuration - one click!

Made by

Donate

If this plugin is useful for you, consider donate it or buy me a beer :) Thank you!

run(); } // Why so serious? ?>