»

'Only letters, numbers, and Underscores allowed']); } $old = get_option('jh_new_login_url'); update_option('jh_new_login_url', $slug); // Set rewrite flush flag if ($slug !== $old) { update_option('aluc_need_flush', 1); } wp_send_json_success([ 'message' => 'Saved successfully!', 'slug' => $slug ]); wp_die(); } function admin_login_url_change_page_settings( $links ) { $link = sprintf( "%s", admin_url( 'options-general.php?page=admin-login-url-change' ), __( 'Settings', 'admin-login-url-change' ) ); array_push( $links, $link ); return $links; } function admin_login_url_change_css(){ wp_enqueue_style( 'admin-login-url-change-css', ALUC_PLUGIN_URL .'/assets/css/style.css', false, VERSION); wp_enqueue_script('admin-login-url-change-js', ALUC_PLUGIN_URL .'/assets/js/main.js', [], VERSION, true); wp_localize_script('admin-login-url-change-js', 'aluc_core', array( 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('aluc-ajax-nonce'), )); } /** * Block wp-admin & wp-login */ public function block_admin_access() { $slug = $this->get_slug(); if ( ! $slug ) return; $req = isset( $_SERVER['REQUEST_URI'] ) ? wp_unslash( $_SERVER['REQUEST_URI'] ) : ''; $path = trim( wp_parse_url( $req, PHP_URL_PATH ), '/' ); if ( ! is_user_logged_in() && ( preg_match('#(^|/)wp-admin(/|$)#i', $path) || preg_match('#(^|/)admin(/|$)#i', $path) ) ) { remove_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 ); wp_safe_redirect( home_url('/404'), 302 ); exit; } if ( strtolower($path) === 'wp-login.php' && strtoupper($_SERVER['REQUEST_METHOD']) === 'GET' ) { status_header(404); exit; } } /** Fix redirect to dashboard */ public function fix_login_redirect($redirect_to, $requested, $user) { if ( isset($user->ID) && $user->ID > 0 ) { if ( empty($redirect_to) || strpos($redirect_to, 'wp-login.php') !== false ) { return admin_url(); } } return $redirect_to; } /** Rewrite redirects */ public function rewrite_wp_login_redirects($location) { if ( stripos($location, 'wp-login.php') === false ) return $location; $slug = $this->get_slug(); if ( strpos($location, 'checkemail=confirm') !== false ) { return home_url("/{$slug}/?checkemail=confirm"); } return $location; } /** Serve login form at /slug */ public function register_custom_login_rewrite() { $slug = $this->get_slug(); if (! $slug) return; add_rewrite_rule("^{$slug}/?$", 'index.php?aluc_login=1', 'top'); } public function add_query_vars($vars) { $vars[] = 'aluc_login'; return $vars; } public function load_custom_login_template() { if ( get_query_var('aluc_login') ) { nocache_headers(); header('X-Robots-Tag: noindex, nofollow, noarchive', true); global $pagenow, $user_login, $error; $pagenow = 'wp-login.php'; require_once ABSPATH . 'wp-login.php'; exit; } } /** Logout redirect */ public function custom_logout_redirect() { $slug = $this->get_slug(); wp_safe_redirect( home_url("/{$slug}/?loggedout=true") ); exit; } /** Logout URL override */ public function custom_logout_url($url, $redirect) { $slug = $this->get_slug(); $url = home_url("/{$slug}/?action=logout"); if ($redirect) { $url = add_query_arg('redirect_to', urlencode($redirect), $url); } return wp_nonce_url($url, 'log-out'); } /** Lost password */ public function custom_lostpassword_url($url, $redirect) { $slug = $this->get_slug(); $url = home_url("/{$slug}/?action=lostpassword"); if ($redirect) { $url = add_query_arg('redirect_to', urlencode($redirect), $url); } return $url; } /** Login URL */ public function custom_login_url($login_url, $redirect, $reauth) { $slug = $this->get_slug(); $url = home_url("/{$slug}/"); if ($redirect) { $url = add_query_arg('redirect_to', urlencode($redirect), $url); } if ($reauth) { $url = add_query_arg('reauth', '1', $url); } return $url; } /** * Auto flush if slug changed */ public function auto_flush_if_slug_changed() { $slug = $this->get_slug(); $stored = get_option( 'aluc_runtime_slug', '' ); if ( $slug !== $stored ) { update_option( 'aluc_runtime_slug', $slug ); flush_rewrite_rules(); } } /** * Auto flush when plugin update */ public function auto_flush_when_plugin_update() { $stored = get_option( 'aluc_runtime_slug_flush', '' ); if ( empty($stored) ) { update_option( 'aluc_runtime_slug_flush', 1 ); flush_rewrite_rules(); } } /** Flush rewrite rules when settings are updated */ public function maybe_flush_rewrites() { if ( get_option('aluc_need_flush') ) { flush_rewrite_rules(); delete_option('aluc_need_flush'); } } /** Block search engines */ public function block_robots($output) { $slug = $this->get_slug(); $rules = "\n# Admin Login URL Change\nUser-agent: *\n"; $rules .= "Disallow: /{$slug}/\n"; $rules .= "Disallow: /wp-login.php\n"; $rules .= "Disallow: /wp-admin/\n"; return $output . $rules; } /** Reset email URL replacement */ public function modify_reset_password_email($message, $key, $user_login) { $slug = $this->get_slug(); $reset_url = home_url("/{$slug}/?action=rp&key={$key}&login=" . rawurlencode($user_login)); return preg_replace('/https?:\/\/[^\s]+/i', $reset_url, $message); } }