wordpress进入后台登录页面404怎么办?

wordpress后台登录页面404页面怎么办?

把下面这些代码复制到文本里面,后改为wp-login.php这个名字,再把这个文件放置到根目录下,如果根目录下有这个文件直接覆盖掉就好了
放置后去到后台Ctrl+Shift+R清除浏览器缓存就好了,或者换个浏览器。

// wp-login.php

php

  WordPress User Page
 
  Handles authentication, registering, resetting passwords, forgot password,
  and other user handling.
 
  @package WordPress
 

 Make sure that the WordPress bootstrap has run before continuing. 
require __DIR__ . 'wp-load.php';

 Redirect to HTTPS login if forced to use SSL.
if ( force_ssl_admin() && ! is_ssl() ) {
	if ( 0 === strpos( $_SERVER['REQUEST_URI'], 'http' ) ) {
		wp_safe_redirect( set_url_scheme( $_SERVER['REQUEST_URI'], 'https' ) );
		exit;
	} else {
		wp_safe_redirect( 'https' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
		exit;
	}
}


  Output the login page header.
 
  @since 2.1.0
 
  @global string      $error         Login error message set by deprecated pluggable wp_login() function
                                     or plugins replacing it.
  @global boolstring $interim_login Whether interim login modal is being displayed. String 'success'
                                     upon successful login.
  @global string      $action        The action that brought the visitor to the login page.
 
  @param string   $title    Optional. WordPress login Page title to display in the `title` element.
                            Default 'Log In'.
  @param string   $message  Optional. Message to display in header. Default empty.
  @param WP_Error $wp_error Optional. The error to pass. Default is a WP_Error instance.
 
function login_header( $title = 'Log In', $message = '', $wp_error = null ) {
	global $error, $interim_login, $action;

	 Don't index any of these forms.
	add_action( 'login_head', 'wp_sensitive_page_meta' );

	add_action( 'login_head', 'wp_login_viewport_meta' );

	if ( ! is_wp_error( $wp_error ) ) {
		$wp_error = new WP_Error();
	}

	 Shake it!
	$shake_error_codes = array( 'empty_password', 'empty_email', 'invalid_email', 'invalidcombo', 'empty_username', 'invalid_username', 'incorrect_password', 'retrieve_password_email_failure' );
	
	  Filters the error codes array for shaking the login form.
	 
	  @since 3.0.0
	 
	  @param array $shake_error_codes Error codes that shake the login form.
	 
	$shake_error_codes = apply_filters( 'shake_error_codes', $shake_error_codes );

	if ( $shake_error_codes && $wp_error-has_errors() && in_array( $wp_error-get_error_code(), $shake_error_codes, true ) ) {
		add_action( 'login_footer', 'wp_shake_js', 12 );
	}

	$login_title = get_bloginfo( 'name', 'display' );

	 translators Login screen title. 1 Login screen name, 2 Network or site name. 
	$login_title = sprintf( __( '%1$s ‹ %2$s — WordPress' ), $title, $login_title );

	if ( wp_is_recovery_mode() ) {
		 translators %s Login screen title. 
		$login_title = sprintf( __( 'Recovery Mode — %s' ), $login_title );
	}

	
	  Filters the title tag content for login page.
	 
	  @since 4.9.0
	 
	  @param string $login_title The page title, with extra context added.
	  @param string $title       The original page title.
	 
	$login_title = apply_filters( 'login_title', $login_title, $title );

	!DOCTYPE html
	html php language_attributes(); 
	head
	meta http-equiv=Content-Type content=php bloginfo( 'html_type' ); ; charset=php bloginfo( 'charset' );  
	titlephp echo $login_title; title
	php

	wp_enqueue_style( 'login' );

	
	  Remove all stored post data on logging out.
	  This could be added by add_action('login_head'...) like wp_shake_js(),
	  but maybe better if it's not removable by plugins.
	 
	if ( 'loggedout' === $wp_error-get_error_code() ) {
		
		scriptif(sessionStorage in window){try{for(var key in sessionStorage){if(key.indexOf(wp-autosave-)!=-1){sessionStorage.removeItem(key)}}}catch(e){}};script
		php
	}

	
	  Enqueue scripts and styles for the login page.
	 
	  @since 3.1.0
	 
	do_action( 'login_enqueue_scripts' );

	
	  Fires in the login page header after scripts are enqueued.
	 
	  @since 2.1.0
	 
	do_action( 'login_head' );

	$login_header_url = __( 'httpswordpress.org' );

	
	  Filters link URL of the header logo above login form.
	 
	  @since 2.1.0
	 
	  @param string $login_header_url Login header logo URL.
	 
	$login_header_url = apply_filters( 'login_headerurl', $login_header_url );

	$login_header_title = '';

	
	  Filters the title attribute of the header logo above login form.
	 
	  @since 2.1.0
	  @deprecated 5.2.0 Use {@see 'login_headertext'} instead.
	 
	  @param string $login_header_title Login header logo title attribute.
	 
	$login_header_title = apply_filters_deprecated(
		'login_headertitle',
		array( $login_header_title ),
		'5.2.0',
		'login_headertext',
		__( 'Usage of the title attribute on the login logo is not recommended for accessibility reasons. Use the link text instead.' )
	);

	$login_header_text = empty( $login_header_title )  __( 'Powered by WordPress' )  $login_header_title;

	
	  Filters the link text of the header logo above the login form.
	 
	  @since 5.2.0
	 
	  @param string $login_header_text The login header logo link text.
	 
	$login_header_text = apply_filters( 'login_headertext', $login_header_text );

	$classes = array( 'login-action-' . $action, 'wp-core-ui' );

	if ( is_rtl() ) {
		$classes[] = 'rtl';
	}

	if ( $interim_login ) {
		$classes[] = 'interim-login';

		
		style type=textcsshtml{background-color transparent;}style
		php

		if ( 'success' === $interim_login ) {
			$classes[] = 'interim-login-success';
		}
	}

	$classes[] = ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) );

	
	  Filters the login page body classes.
	 
	  @since 3.5.0
	 
	  @param array  $classes An array of body classes.
	  @param string $action  The action that brought the visitor to the login page.
	 
	$classes = apply_filters( 'login_body_class', $classes, $action );

	
	head
	body class=login no-js php echo esc_attr( implode( ' ', $classes ) ); 
	script type=textjavascript
		document.body.className = document.body.className.replace('no-js','js');
	script
	php
	
	  Fires in the login page header after the body tag is opened.
	 
	  @since 4.6.0
	 
	do_action( 'login_header' );

	
	div id=login
		h1a href=php echo esc_url( $login_header_url ); php echo $login_header_text; ah1
	php
	
	  Filters the message to display above the login form.
	 
	  @since 2.1.0
	 
	  @param string $message Login message text.
	 
	$message = apply_filters( 'login_message', $message );

	if ( ! empty( $message ) ) {
		echo $message . n;
	}

	 In case a plugin uses $error rather than the $wp_errors object.
	if ( ! empty( $error ) ) {
		$wp_error-add( 'error', $error );
		unset( $error );
	}

	if ( $wp_error-has_errors() ) {
		$errors   = '';
		$messages = '';

		foreach ( $wp_error-get_error_codes() as $code ) {
			$severity = $wp_error-get_error_data( $code );
			foreach ( $wp_error-get_error_messages( $code ) as $error_message ) {
				if ( 'message' === $severity ) {
					$messages .= '	' . $error_message . br n;
				} else {
					$errors .= '	' . $error_message . br n;
				}
			}
		}

		if ( ! empty( $errors ) ) {
			
			  Filters the error messages displayed above the login form.
			 
			  @since 2.1.0
			 
			  @param string $errors Login error message.
			 
			echo 'div id=login_error' . apply_filters( 'login_errors', $errors ) . divn;
		}

		if ( ! empty( $messages ) ) {
			
			  Filters instructional messages displayed above the login form.
			 
			  @since 2.5.0
			 
			  @param string $messages Login messages.
			 
			echo 'p class=message' . apply_filters( 'login_messages', $messages ) . pn;
		}
	}
}  End of login_header().


  Outputs the footer for the login page.
 
  @since 3.1.0
 
  @global boolstring $interim_login Whether interim login modal is being displayed. String 'success'
                                     upon successful login.
 
  @param string $input_id Which input to auto-focus.
 
function login_footer( $input_id = '' ) {
	global $interim_login;

	 Don't allow interim logins to navigate away from the page.
	if ( ! $interim_login ) {
		
		p id=backtobloga href=php echo esc_url( home_url( '' ) ); 
		php

		 translators %s Site title. 
		printf( _x( '← Back to %s', 'site' ), get_bloginfo( 'title', 'display' ) );

		
		ap
		php

		the_privacy_policy_link( 'div class=privacy-policy-page-link', 'div' );
	}

	
	divphp  End of div id=login. 

	php

	if ( ! empty( $input_id ) ) {
		
		script type=textjavascript
		try{document.getElementById('php echo $input_id; ').focus();}catch(e){}
		if(typeof wpOnload=='function')wpOnload();
		script
		php
	}

	
	  Fires in the login page footer.
	 
	  @since 3.1.0
	 
	do_action( 'login_footer' );

	
	div class=cleardiv
	body
	html
	php
}


  Outputs the Javascript to handle the form shaking.
 
  @since 3.0.0
 
function wp_shake_js() {
	
	script type=textjavascript
	document.querySelector('form').classList.add('shake');
	script
	php
}


  Outputs the viewport meta tag.
 
  @since 3.7.0
 
function wp_login_viewport_meta() {
	
	meta name=viewport content=width=device-width 
	php
}


  Handles sending password retrieval email to user.
 
  @since 2.5.0
 
  @return boolWP_Error True when finish. WP_Error on error
 
function retrieve_password() {
	$errors    = new WP_Error();
	$user_data = false;

	if ( empty( $_POST['user_login'] )  ! is_string( $_POST['user_login'] ) ) {
		$errors-add( 'empty_username', __( 'strongErrorstrong Please enter a username or email address.' ) );
	} elseif ( strpos( $_POST['user_login'], '@' ) ) {
		$user_data = get_user_by( 'email', trim( wp_unslash( $_POST['user_login'] ) ) );
		if ( empty( $user_data ) ) {
			$errors-add( 'invalid_email', __( 'strongErrorstrong There is no account with that username or email address.' ) );
		}
	} else {
		$login     = trim( wp_unslash( $_POST['user_login'] ) );
		$user_data = get_user_by( 'login', $login );
	}

	
	  Fires before errors are returned from a password reset request.
	 
	  @since 2.1.0
	  @since 4.4.0 Added the `$errors` parameter.
	  @since 5.4.0 Added the `$user_data` parameter.
	 
	  @param WP_Error      $errors    A WP_Error object containing any errors generated
	                                  by using invalid credentials.
	  @param WP_Userfalse $user_data WP_User object if found, false if the user does not exist.
	 
	do_action( 'lostpassword_post', $errors, $user_data );

	
	  Filters the errors encountered on a password reset request.
	 
	  The filtered WP_Error object may, for example, contain errors for an invalid
	  username or email address. A WP_Error object should always be returned,
	  but may or may not contain errors.
	 
	  If any errors are present in $errors, this will abort the password reset request.
	 
	  @since 5.5.0
	 
	  @param WP_Error      $errors    A WP_Error object containing any errors generated
	                                  by using invalid credentials.
	  @param WP_Userfalse $user_data WP_User object if found, false if the user does not exist.
	 
	$errors = apply_filters( 'lostpassword_errors', $errors, $user_data );

	if ( $errors-has_errors() ) {
		return $errors;
	}

	if ( ! $user_data ) {
		$errors-add( 'invalidcombo', __( 'strongErrorstrong There is no account with that username or email address.' ) );
		return $errors;
	}

	 Redefining user_login ensures we return the right case in the email.
	$user_login = $user_data-user_login;
	$user_email = $user_data-user_email;
	$key        = get_password_reset_key( $user_data );

	if ( is_wp_error( $key ) ) {
		return $key;
	}

	if ( is_multisite() ) {
		$site_name = get_network()-site_name;
	} else {
		
		  The blogname option is escaped with esc_html on the way into the database
		  in sanitize_option we want to reverse this for the plain text arena of emails.
		 
		$site_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
	}

	$message = __( 'Someone has requested a password reset for the following account' ) . rnrn;
	 translators %s Site name. 
	$message .= sprintf( __( 'Site Name %s' ), $site_name ) . rnrn;
	 translators %s User login. 
	$message .= sprintf( __( 'Username %s' ), $user_login ) . rnrn;
	$message .= __( 'If this was a mistake, just ignore this email and nothing will happen.' ) . rnrn;
	$message .= __( 'To reset your password, visit the following address' ) . rnrn;
	$message .= network_site_url( wp-login.phpaction=rp&key=$key&login= . rawurlencode( $user_login ), 'login' ) . rn;

	 translators Password reset notification email subject. %s Site title. 
	$title = sprintf( __( '[%s] Password Reset' ), $site_name );

	
	  Filters the subject of the password reset email.
	 
	  @since 2.8.0
	  @since 4.4.0 Added the `$user_login` and `$user_data` parameters.
	 
	  @param string  $title      Default email title.
	  @param string  $user_login The username for the user.
	  @param WP_User $user_data  WP_User object.
	 
	$title = apply_filters( 'retrieve_password_title', $title, $user_login, $user_data );

	
	  Filters the message body of the password reset mail.
	 
	  If the filtered message is empty, the password reset email will not be sent.
	 
	  @since 2.8.0
	  @since 4.1.0 Added `$user_login` and `$user_data` parameters.
	 
	  @param string  $message    Default mail message.
	  @param string  $key        The activation key.
	  @param string  $user_login The username for the user.
	  @param WP_User $user_data  WP_User object.
	 
	$message = apply_filters( 'retrieve_password_message', $message, $key, $user_login, $user_data );

	if ( $message && ! wp_mail( $user_email, wp_specialchars_decode( $title ), $message ) ) {
		$errors-add(
			'retrieve_password_email_failure',
			sprintf(
				 translators %s Documentation URL. 
				__( 'strongErrorstrong The email could not be sent. Your site may not be correctly configured to send emails. a href=%sGet support for resetting your passworda.' ),
				esc_url( __( 'httpswordpress.orgsupportarticleresetting-your-password' ) )
			)
		);
		return $errors;
	}

	return true;
}


 Main.


$action = isset( $_REQUEST['action'] )  $_REQUEST['action']  'login';
$errors = new WP_Error();

if ( isset( $_GET['key'] ) ) {
	$action = 'resetpass';
}

if ( isset( $_GET['checkemail'] ) ) {
	$action = 'checkemail';
}

$default_actions = array(
	'confirm_admin_email',
	'postpass',
	'logout',
	'lostpassword',
	'retrievepassword',
	'resetpass',
	'rp',
	'register',
	'checkemail',
	'confirmaction',
	'login',
	WP_Recovery_Mode_Link_ServiceLOGIN_ACTION_ENTERED,
);

 Validate action so as to default to the login screen.
if ( ! in_array( $action, $default_actions, true ) && false === has_filter( 'login_form_' . $action ) ) {
	$action = 'login';
}

nocache_headers();

header( 'Content-Type ' . get_bloginfo( 'html_type' ) . '; charset=' . get_bloginfo( 'charset' ) );

if ( defined( 'RELOCATE' ) && RELOCATE ) {  Move flag is set.
	if ( isset( $_SERVER['PATH_INFO'] ) && ( $_SERVER['PATH_INFO'] !== $_SERVER['PHP_SELF'] ) ) {
		$_SERVER['PHP_SELF'] = str_replace( $_SERVER['PATH_INFO'], '', $_SERVER['PHP_SELF'] );
	}

	$url = dirname( set_url_scheme( 'http' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] ) );

	if ( get_option( 'siteurl' ) !== $url ) {
		update_option( 'siteurl', $url );
	}
}

 Set a cookie now to see if they are supported by the browser.
$secure = ( 'https' === parse_url( wp_login_url(), PHP_URL_SCHEME ) );
setcookie( TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN, $secure );

if ( SITECOOKIEPATH !== COOKIEPATH ) {
	setcookie( TEST_COOKIE, 'WP Cookie check', 0, SITECOOKIEPATH, COOKIE_DOMAIN, $secure );
}


  Fires when the login form is initialized.
 
  @since 3.2.0
 
do_action( 'login_init' );


  Fires before a specified login form action.
 
  The dynamic portion of the hook name, `$action`, refers to the action
  that brought the visitor to the login form. Actions include 'postpass',
  'logout', 'lostpassword', etc.
 
  @since 2.8.0
 
do_action( login_form_{$action} );

$http_post     = ( 'POST' === $_SERVER['REQUEST_METHOD'] );
$interim_login = isset( $_REQUEST['interim-login'] );


  Filters the separator used between login form navigation links.
 
  @since 4.9.0
 
  @param string $login_link_separator The separator used between login form navigation links.
 
$login_link_separator = apply_filters( 'login_link_separator', '  ' );

switch ( $action ) {

	case 'confirm_admin_email'
		
		  Note that `is_user_logged_in()` will return false immediately after logging in
		  as the current user is not set, see wp-includespluggable.php.
		  However this action runs on a redirect after logging in.
		 
		if ( ! is_user_logged_in() ) {
			wp_safe_redirect( wp_login_url() );
			exit;
		}

		if ( ! empty( $_REQUEST['redirect_to'] ) ) {
			$redirect_to = $_REQUEST['redirect_to'];
		} else {
			$redirect_to = admin_url();
		}

		if ( current_user_can( 'manage_options' ) ) {
			$admin_email = get_option( 'admin_email' );
		} else {
			wp_safe_redirect( $redirect_to );
			exit;
		}

		
		  Filters the interval for dismissing the admin email confirmation screen.
		 
		  If `0` (zero) is returned, the Remind me later link will not be displayed.
		 
		  @since 5.3.1
		 
		  @param int $interval Interval time (in seconds). Default is 3 days.
		 
		$remind_interval = (int) apply_filters( 'admin_email_remind_interval', 3  DAY_IN_SECONDS );

		if ( ! empty( $_GET['remind_me_later'] ) ) {
			if ( ! wp_verify_nonce( $_GET['remind_me_later'], 'remind_me_later_nonce' ) ) {
				wp_safe_redirect( wp_login_url() );
				exit;
			}

			if ( $remind_interval  0 ) {
				update_option( 'admin_email_lifespan', time() + $remind_interval );
			}

			$redirect_to = add_query_arg( 'admin_email_remind_later', 1, $redirect_to );
			wp_safe_redirect( $redirect_to );
			exit;
		}

		if ( ! empty( $_POST['correct-admin-email'] ) ) {
			if ( ! check_admin_referer( 'confirm_admin_email', 'confirm_admin_email_nonce' ) ) {
				wp_safe_redirect( wp_login_url() );
				exit;
			}

			
			  Filters the interval for redirecting the user to the admin email confirmation screen.
			 
			  If `0` (zero) is returned, the user will not be redirected.
			 
			  @since 5.3.0
			 
			  @param int $interval Interval time (in seconds). Default is 6 months.
			 
			$admin_email_check_interval = (int) apply_filters( 'admin_email_check_interval', 6  MONTH_IN_SECONDS );

			if ( $admin_email_check_interval  0 ) {
				update_option( 'admin_email_lifespan', time() + $admin_email_check_interval );
			}

			wp_safe_redirect( $redirect_to );
			exit;
		}

		login_header( __( 'Confirm your administration email' ), '', $errors );

		
		  Fires before the admin email confirm form.
		 
		  @since 5.3.0
		 
		  @param WP_Error $errors A `WP_Error` object containing any errors generated by using invalid
		                          credentials. Note that the error object may not contain any errors.
		 
		do_action( 'admin_email_confirm', $errors );

		

		form class=admin-email-confirm-form name=admin-email-confirm-form action=php echo esc_url( site_url( 'wp-login.phpaction=confirm_admin_email', 'login_post' ) );  method=post
			php
			
			  Fires inside the admin-email-confirm-form form tags, before the hidden fields.
			 
			  @since 5.3.0
			 
			do_action( 'admin_email_confirm_form' );

			wp_nonce_field( 'confirm_admin_email', 'confirm_admin_email_nonce' );

			
			input type=hidden name=redirect_to value=php echo esc_attr( $redirect_to );  

			h1 class=admin-email__heading
				php _e( 'Administration email verification' ); 
			h1
			p class=admin-email__details
				php _e( 'Please verify that the strongadministration emailstrong for this website is still correct.' ); 
				php

				 translators URL to the WordPress help section about admin email. 
				$admin_email_help_url = __( 'httpswordpress.orgsupportarticlesettings-general-screen#email-address' );

				 translators accessibility text 
				$accessibility_text = sprintf( 'span class=screen-reader-text %sspan', __( '(opens in a new tab)' ) );

				printf(
					'a href=%s rel=noopener noreferrer target=_blank%s%sa',
					esc_url( $admin_email_help_url ),
					__( 'Why is this important' ),
					$accessibility_text
				);

				
			p
			p class=admin-email__details
				php

				printf(
					 translators %s Admin email address. 
					__( 'Current administration email %s' ),
					'strong' . esc_html( $admin_email ) . 'strong'
				);

				
			p
			p class=admin-email__details
				php _e( 'This email may be different from your personal email address.' ); 
			p

			div class=admin-email__actions
				div class=admin-email__actions-primary
					php

					$change_link = admin_url( 'options-general.php' );
					$change_link = add_query_arg( 'highlight', 'confirm_admin_email', $change_link );

					
					a class=button button-large href=php echo esc_url( $change_link ); php _e( 'Update' ); a
					input type=submit name=correct-admin-email id=correct-admin-email class=button button-primary button-large value=php esc_attr_e( 'The email is correct' );  
				div
				php if ( $remind_interval  0 )  
					div class=admin-email__actions-secondary
						php

						$remind_me_link = wp_login_url( $redirect_to );
						$remind_me_link = add_query_arg(
							array(
								'action'          = 'confirm_admin_email',
								'remind_me_later' = wp_create_nonce( 'remind_me_later_nonce' ),
							),
							$remind_me_link
						);

						
						a href=php echo esc_url( $remind_me_link ); php _e( 'Remind me later' ); a
					div
				php endif; 
			div
		form

		php

		login_footer();
		break;

	case 'postpass'
		if ( ! array_key_exists( 'post_password', $_POST ) ) {
			wp_safe_redirect( wp_get_referer() );
			exit;
		}

		require_once ABSPATH . WPINC . 'class-phpass.php';
		$hasher = new PasswordHash( 8, true );

		
		  Filters the life span of the post password cookie.
		 
		  By default, the cookie expires 10 days from creation. To turn this
		  into a session cookie, return 0.
		 
		  @since 3.7.0
		 
		  @param int $expires The expiry time, as passed to setcookie().
		 
		$expire  = apply_filters( 'post_password_expires', time() + 10  DAY_IN_SECONDS );
		$referer = wp_get_referer();

		if ( $referer ) {
			$secure = ( 'https' === parse_url( $referer, PHP_URL_SCHEME ) );
		} else {
			$secure = false;
		}

		setcookie( 'wp-postpass_' . COOKIEHASH, $hasher-HashPassword( wp_unslash( $_POST['post_password'] ) ), $expire, COOKIEPATH, COOKIE_DOMAIN, $secure );

		wp_safe_redirect( wp_get_referer() );
		exit;

	case 'logout'
		check_admin_referer( 'log-out' );

		$user = wp_get_current_user();

		wp_logout();

		if ( ! empty( $_REQUEST['redirect_to'] ) ) {
			$redirect_to           = $_REQUEST['redirect_to'];
			$requested_redirect_to = $redirect_to;
		} else {
			$redirect_to = add_query_arg(
				array(
					'loggedout' = 'true',
					'wp_lang'   = get_user_locale( $user ),
				),
				wp_login_url()
			);

			$requested_redirect_to = '';
		}

		
		  Filters the log out redirect URL.
		 
		  @since 4.2.0
		 
		  @param string  $redirect_to           The redirect destination URL.
		  @param string  $requested_redirect_to The requested redirect destination URL passed as a parameter.
		  @param WP_User $user                  The WP_User object for the user that's logging out.
		 
		$redirect_to = apply_filters( 'logout_redirect', $redirect_to, $requested_redirect_to, $user );

		wp_safe_redirect( $redirect_to );
		exit;

	case 'lostpassword'
	case 'retrievepassword'
		if ( $http_post ) {
			$errors = retrieve_password();

			if ( ! is_wp_error( $errors ) ) {
				$redirect_to = ! empty( $_REQUEST['redirect_to'] )  $_REQUEST['redirect_to']  'wp-login.phpcheckemail=confirm';
				wp_safe_redirect( $redirect_to );
				exit;
			}
		}

		if ( isset( $_GET['error'] ) ) {
			if ( 'invalidkey' === $_GET['error'] ) {
				$errors-add( 'invalidkey', __( 'Your password reset link appears to be invalid. Please request a new link below.' ) );
			} elseif ( 'expiredkey' === $_GET['error'] ) {
				$errors-add( 'expiredkey', __( 'Your password reset link has expired. Please request a new link below.' ) );
			}
		}

		$lostpassword_redirect = ! empty( $_REQUEST['redirect_to'] )  $_REQUEST['redirect_to']  '';
		
		  Filters the URL redirected to after submitting the lostpasswordretrievepassword form.
		 
		  @since 3.0.0
		 
		  @param string $lostpassword_redirect The redirect destination URL.
		 
		$redirect_to = apply_filters( 'lostpassword_redirect', $lostpassword_redirect );

		
		  Fires before the lost password form.
		 
		  @since 1.5.1
		  @since 5.1.0 Added the `$errors` parameter.
		 
		  @param WP_Error $errors A `WP_Error` object containing any errors generated by using invalid
		                          credentials. Note that the error object may not contain any errors.
		 
		do_action( 'lost_password', $errors );

		login_header( __( 'Lost Password' ), 'p class=message' . __( 'Please enter your username or email address. You will receive an email message with instructions on how to reset your password.' ) . 'p', $errors );

		$user_login = '';

		if ( isset( $_POST['user_login'] ) && is_string( $_POST['user_login'] ) ) {
			$user_login = wp_unslash( $_POST['user_login'] );
		}

		

		form name=lostpasswordform id=lostpasswordform action=php echo esc_url( network_site_url( 'wp-login.phpaction=lostpassword', 'login_post' ) );  method=post
			p
				label for=user_loginphp _e( 'Username or Email Address' ); label
				input type=text name=user_login id=user_login class=input value=php echo esc_attr( $user_login );  size=20 autocapitalize=off 
			p
			php

			
			  Fires inside the lostpassword form tags, before the hidden fields.
			 
			  @since 2.1.0
			 
			do_action( 'lostpassword_form' );

			
			input type=hidden name=redirect_to value=php echo esc_attr( $redirect_to );  
			p class=submit
				input type=submit name=wp-submit id=wp-submit class=button button-primary button-large value=php esc_attr_e( 'Get New Password' );  
			p
		form

		p id=nav
			a href=php echo esc_url( wp_login_url() ); php _e( 'Log in' ); a
			php

			if ( get_option( 'users_can_register' ) ) {
				$registration_url = sprintf( 'a href=%s%sa', esc_url( wp_registration_url() ), __( 'Register' ) );

				echo esc_html( $login_link_separator );

				 This filter is documented in wp-includesgeneral-template.php 
				echo apply_filters( 'register', $registration_url );
			}

			
		p
		php

		login_footer( 'user_login' );
		break;

	case 'resetpass'
	case 'rp'
		list( $rp_path ) = explode( '', wp_unslash( $_SERVER['REQUEST_URI'] ) );
		$rp_cookie       = 'wp-resetpass-' . COOKIEHASH;

		if ( isset( $_GET['key'] ) ) {
			$value = sprintf( '%s%s', wp_unslash( $_GET['login'] ), wp_unslash( $_GET['key'] ) );
			setcookie( $rp_cookie, $value, 0, $rp_path, COOKIE_DOMAIN, is_ssl(), true );

			wp_safe_redirect( remove_query_arg( array( 'key', 'login' ) ) );
			exit;
		}

		if ( isset( $_COOKIE[ $rp_cookie ] ) && 0  strpos( $_COOKIE[ $rp_cookie ], '' ) ) {
			list( $rp_login, $rp_key ) = explode( '', wp_unslash( $_COOKIE[ $rp_cookie ] ), 2 );

			$user = check_password_reset_key( $rp_key, $rp_login );

			if ( isset( $_POST['pass1'] ) && ! hash_equals( $rp_key, $_POST['rp_key'] ) ) {
				$user = false;
			}
		} else {
			$user = false;
		}

		if ( ! $user  is_wp_error( $user ) ) {
			setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );

			if ( $user && $user-get_error_code() === 'expired_key' ) {
				wp_redirect( site_url( 'wp-login.phpaction=lostpassword&error=expiredkey' ) );
			} else {
				wp_redirect( site_url( 'wp-login.phpaction=lostpassword&error=invalidkey' ) );
			}

			exit;
		}

		$errors = new WP_Error();

		if ( isset( $_POST['pass1'] ) && $_POST['pass1'] !== $_POST['pass2'] ) {
			$errors-add( 'password_reset_mismatch', __( 'The passwords do not match.' ) );
		}

		
		  Fires before the password reset procedure is validated.
		 
		  @since 3.5.0
		 
		  @param WP_Error         $errors WP Error object.
		  @param WP_UserWP_Error $user   WP_User object if the login and reset key match. WP_Error object otherwise.
		 
		do_action( 'validate_password_reset', $errors, $user );

		if ( ( ! $errors-has_errors() ) && isset( $_POST['pass1'] ) && ! empty( $_POST['pass1'] ) ) {
			reset_password( $user, $_POST['pass1'] );
			setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
			login_header( __( 'Password Reset' ), 'p class=message reset-pass' . __( 'Your password has been reset.' ) . ' a href=' . esc_url( wp_login_url() ) . '' . __( 'Log in' ) . 'ap' );
			login_footer();
			exit;
		}

		wp_enqueue_script( 'utils' );
		wp_enqueue_script( 'user-profile' );

		login_header( __( 'Reset Password' ), 'p class=message reset-pass' . __( 'Enter your new password below.' ) . 'p', $errors );

		
		form name=resetpassform id=resetpassform action=php echo esc_url( network_site_url( 'wp-login.phpaction=resetpass', 'login_post' ) );  method=post autocomplete=off
			input type=hidden id=user_login value=php echo esc_attr( $rp_login );  autocomplete=off 

			div class=user-pass1-wrap
				p
					label for=pass1php _e( 'New password' ); label
				p

				div class=wp-pwd
					input type=password data-reveal=1 data-pw=php echo esc_attr( wp_generate_password( 16 ) );  name=pass1 id=pass1 class=input password-input size=24 value= autocomplete=off aria-describedby=pass-strength-result 

					button type=button class=button button-secondary wp-hide-pw hide-if-no-js data-toggle=0 aria-label=php esc_attr_e( 'Hide password' ); 
						span class=dashicons dashicons-hidden aria-hidden=truespan
					button
					div id=pass-strength-result class=hide-if-no-js aria-live=politephp _e( 'Strength indicator' ); div
				div
				div class=pw-weak
					input type=checkbox name=pw_weak id=pw-weak class=pw-checkbox 
					label for=pw-weakphp _e( 'Confirm use of weak password' ); label
				div
			div

			p class=user-pass2-wrap
				label for=pass2php _e( 'Confirm new password' ); label
				input type=password name=pass2 id=pass2 class=input size=20 value= autocomplete=off 
			p

			p class=description indicator-hintphp echo wp_get_password_hint(); p
			br class=clear 

			php

			
			  Fires following the 'Strength indicator' meter in the user password reset form.
			 
			  @since 3.9.0
			 
			  @param WP_User $user User object of the user whose password is being reset.
			 
			do_action( 'resetpass_form', $user );

			
			input type=hidden name=rp_key value=php echo esc_attr( $rp_key );  
			p class=submit
				input type=submit name=wp-submit id=wp-submit class=button button-primary button-large value=php esc_attr_e( 'Reset Password' );  
			p
		form

		p id=nav
			a href=php echo esc_url( wp_login_url() ); php _e( 'Log in' ); a
			php

			if ( get_option( 'users_can_register' ) ) {
				$registration_url = sprintf( 'a href=%s%sa', esc_url( wp_registration_url() ), __( 'Register' ) );

				echo esc_html( $login_link_separator );

				 This filter is documented in wp-includesgeneral-template.php 
				echo apply_filters( 'register', $registration_url );
			}

			
		p
		php

		login_footer( 'user_pass' );
		break;

	case 'register'
		if ( is_multisite() ) {
			
			  Filters the Multisite sign up URL.
			 
			  @since 3.0.0
			 
			  @param string $sign_up_url The sign up URL.
			 
			wp_redirect( apply_filters( 'wp_signup_location', network_site_url( 'wp-signup.php' ) ) );
			exit;
		}

		if ( ! get_option( 'users_can_register' ) ) {
			wp_redirect( site_url( 'wp-login.phpregistration=disabled' ) );
			exit;
		}

		$user_login = '';
		$user_email = '';

		if ( $http_post ) {
			if ( isset( $_POST['user_login'] ) && is_string( $_POST['user_login'] ) ) {
				$user_login = wp_unslash( $_POST['user_login'] );
			}

			if ( isset( $_POST['user_email'] ) && is_string( $_POST['user_email'] ) ) {
				$user_email = wp_unslash( $_POST['user_email'] );
			}

			$errors = register_new_user( $user_login, $user_email );

			if ( ! is_wp_error( $errors ) ) {
				$redirect_to = ! empty( $_POST['redirect_to'] )  $_POST['redirect_to']  'wp-login.phpcheckemail=registered';
				wp_safe_redirect( $redirect_to );
				exit;
			}
		}

		$registration_redirect = ! empty( $_REQUEST['redirect_to'] )  $_REQUEST['redirect_to']  '';

		
		  Filters the registration redirect URL.
		 
		  @since 3.0.0
		 
		  @param string $registration_redirect The redirect destination URL.
		 
		$redirect_to = apply_filters( 'registration_redirect', $registration_redirect );

		login_header( __( 'Registration Form' ), 'p class=message register' . __( 'Register For This Site' ) . 'p', $errors );

		
		form name=registerform id=registerform action=php echo esc_url( site_url( 'wp-login.phpaction=register', 'login_post' ) );  method=post novalidate=novalidate
			p
				label for=user_loginphp _e( 'Username' ); label
				input type=text name=user_login id=user_login class=input value=php echo esc_attr( wp_unslash( $user_login ) );  size=20 autocapitalize=off 
			p
			p
				label for=user_emailphp _e( 'Email' ); label
				input type=email name=user_email id=user_email class=input value=php echo esc_attr( wp_unslash( $user_email ) );  size=25 
			p
			php

			
			  Fires following the 'Email' field in the user registration form.
			 
			  @since 2.1.0
			 
			do_action( 'register_form' );

			
			p id=reg_passmail
				php _e( 'Registration confirmation will be emailed to you.' ); 
			p
			br class=clear 
			input type=hidden name=redirect_to value=php echo esc_attr( $redirect_to );  
			p class=submit
				input type=submit name=wp-submit id=wp-submit class=button button-primary button-large value=php esc_attr_e( 'Register' );  
			p
		form

		p id=nav
			a href=php echo esc_url( wp_login_url() ); php _e( 'Log in' ); a
				php echo esc_html( $login_link_separator ); 
			a href=php echo esc_url( wp_lostpassword_url() ); php _e( 'Lost your password' ); a
		p
		php

		login_footer( 'user_login' );
		break;

	case 'checkemail'
		$redirect_to = admin_url();
		$errors      = new WP_Error();

		if ( 'confirm' === $_GET['checkemail'] ) {
			$errors-add(
				'confirm',
				sprintf(
					 translators %s Link to the login page. 
					__( 'Check your email for the confirmation link, then visit the a href=%slogin pagea.' ),
					wp_login_url()
				),
				'message'
			);
		} elseif ( 'registered' === $_GET['checkemail'] ) {
			$errors-add(
				'registered',
				sprintf(
					 translators %s Link to the login page. 
					__( 'Registration complete. Please check your email, then visit the a href=%slogin pagea.' ),
					wp_login_url()
				),
				'message'
			);
		}

		 This action is documented in wp-login.php 
		$errors = apply_filters( 'wp_login_errors', $errors, $redirect_to );

		login_header( __( 'Check your email' ), '', $errors );
		login_footer();
		break;

	case 'confirmaction'
		if ( ! isset( $_GET['request_id'] ) ) {
			wp_die( __( 'Missing request ID.' ) );
		}

		if ( ! isset( $_GET['confirm_key'] ) ) {
			wp_die( __( 'Missing confirm key.' ) );
		}

		$request_id = (int) $_GET['request_id'];
		$key        = sanitize_text_field( wp_unslash( $_GET['confirm_key'] ) );
		$result     = wp_validate_user_request_key( $request_id, $key );

		if ( is_wp_error( $result ) ) {
			wp_die( $result );
		}

		
		  Fires an action hook when the account action has been confirmed by the user.
		 
		  Using this you can assume the user has agreed to perform the action by
		  clicking on the link in the confirmation email.
		 
		  After firing this action hook the page will redirect to wp-login a callback
		  redirects or exits first.
		 
		  @since 4.9.6
		 
		  @param int $request_id Request ID.
		 
		do_action( 'user_request_action_confirmed', $request_id );

		$message = _wp_privacy_account_request_confirmed_message( $request_id );

		login_header( __( 'User action confirmed.' ), $message );
		login_footer();
		exit;

	case 'login'
	default
		$secure_cookie   = '';
		$customize_login = isset( $_REQUEST['customize-login'] );

		if ( $customize_login ) {
			wp_enqueue_script( 'customize-base' );
		}

		 If the user wants SSL but the session is not SSL, force a secure cookie.
		if ( ! empty( $_POST['log'] ) && ! force_ssl_admin() ) {
			$user_name = sanitize_user( wp_unslash( $_POST['log'] ) );
			$user      = get_user_by( 'login', $user_name );

			if ( ! $user && strpos( $user_name, '@' ) ) {
				$user = get_user_by( 'email', $user_name );
			}

			if ( $user ) {
				if ( get_user_option( 'use_ssl', $user-ID ) ) {
					$secure_cookie = true;
					force_ssl_admin( true );
				}
			}
		}

		if ( isset( $_REQUEST['redirect_to'] ) ) {
			$redirect_to = $_REQUEST['redirect_to'];
			 Redirect to HTTPS if user wants SSL.
			if ( $secure_cookie && false !== strpos( $redirect_to, 'wp-admin' ) ) {
				$redirect_to = preg_replace( '^http', 'https', $redirect_to );
			}
		} else {
			$redirect_to = admin_url();
		}

		$reauth = empty( $_REQUEST['reauth'] )  false  true;

		$user = wp_signon( array(), $secure_cookie );

		if ( empty( $_COOKIE[ LOGGED_IN_COOKIE ] ) ) {
			if ( headers_sent() ) {
				$user = new WP_Error(
					'test_cookie',
					sprintf(
						 translators 1 Browser cookie documentation URL, 2 Support forums URL. 
						__( 'strongErrorstrong Cookies are blocked due to unexpected output. For help, please see a href=%1$sthis documentationa or try the a href=%2$ssupport forumsa.' ),
						__( 'httpswordpress.orgsupportarticlecookies' ),
						__( 'httpswordpress.orgsupportforums' )
					)
				);
			} elseif ( isset( $_POST['testcookie'] ) && empty( $_COOKIE[ TEST_COOKIE ] ) ) {
				 If cookies are disabled, we can't log in even with a valid user and password.
				$user = new WP_Error(
					'test_cookie',
					sprintf(
						 translators %s Browser cookie documentation URL. 
						__( 'strongErrorstrong Cookies are blocked or not supported by your browser. You must a href=%senable cookiesa to use WordPress.' ),
						__( 'httpswordpress.orgsupportarticlecookies#enable-cookies-in-your-browser' )
					)
				);
			}
		}

		$requested_redirect_to = isset( $_REQUEST['redirect_to'] )  $_REQUEST['redirect_to']  '';
		
		  Filters the login redirect URL.
		 
		  @since 3.0.0
		 
		  @param string           $redirect_to           The redirect destination URL.
		  @param string           $requested_redirect_to The requested redirect destination URL passed as a parameter.
		  @param WP_UserWP_Error $user                  WP_User object if login was successful, WP_Error object otherwise.
		 
		$redirect_to = apply_filters( 'login_redirect', $redirect_to, $requested_redirect_to, $user );

		if ( ! is_wp_error( $user ) && ! $reauth ) {
			if ( $interim_login ) {
				$message       = 'p class=message' . __( 'You have logged in successfully.' ) . 'p';
				$interim_login = 'success';
				login_header( '', $message );

				
				div
				php

				 This action is documented in wp-login.php 
				do_action( 'login_footer' );

				if ( $customize_login ) {
					
					script type=textjavascriptsetTimeout( function(){ new wp.customize.Messenger({ url 'php echo wp_customize_url(); ', channel 'login' }).send('login') }, 1000 );script
					php
				}

				
				bodyhtml
				php

				exit;
			}

			 Check if it is time to add a redirect to the admin email confirmation screen.
			if ( is_a( $user, 'WP_User' ) && $user-exists() && $user-has_cap( 'manage_options' ) ) {
				$admin_email_lifespan = (int) get_option( 'admin_email_lifespan' );

				 If `0` (or anything falsey as it is cast to int) is returned, the user will not be redirected
				 to the admin email confirmation screen.
				 This filter is documented in wp-login.php 
				$admin_email_check_interval = (int) apply_filters( 'admin_email_check_interval', 6  MONTH_IN_SECONDS );

				if ( $admin_email_check_interval  0 && time()  $admin_email_lifespan ) {
					$redirect_to = add_query_arg(
						array(
							'action'  = 'confirm_admin_email',
							'wp_lang' = get_user_locale( $user ),
						),
						wp_login_url( $redirect_to )
					);
				}
			}

			if ( ( empty( $redirect_to )  'wp-admin' === $redirect_to  admin_url() === $redirect_to ) ) {
				 If the user doesn't belong to a blog, send them to user admin. If the user can't edit posts, send them to their profile.
				if ( is_multisite() && ! get_active_blog_for_user( $user-ID ) && ! is_super_admin( $user-ID ) ) {
					$redirect_to = user_admin_url();
				} elseif ( is_multisite() && ! $user-has_cap( 'read' ) ) {
					$redirect_to = get_dashboard_url( $user-ID );
				} elseif ( ! $user-has_cap( 'edit_posts' ) ) {
					$redirect_to = $user-has_cap( 'read' )  admin_url( 'profile.php' )  home_url();
				}

				wp_redirect( $redirect_to );
				exit;
			}

			wp_safe_redirect( $redirect_to );
			exit;
		}

		$errors = $user;
		 Clear errors if loggedout is set.
		if ( ! empty( $_GET['loggedout'] )  $reauth ) {
			$errors = new WP_Error();
		}

		if ( empty( $_POST ) && $errors-get_error_codes() === array( 'empty_username', 'empty_password' ) ) {
			$errors = new WP_Error( '', '' );
		}

		if ( $interim_login ) {
			if ( ! $errors-has_errors() ) {
				$errors-add( 'expired', __( 'Your session has expired. Please log in to continue where you left off.' ), 'message' );
			}
		} else {
			 Some parts of this script use the main login form to display a message.
			if ( isset( $_GET['loggedout'] ) && $_GET['loggedout'] ) {
				$errors-add( 'loggedout', __( 'You are now logged out.' ), 'message' );
			} elseif ( isset( $_GET['registration'] ) && 'disabled' === $_GET['registration'] ) {
				$errors-add( 'registerdisabled', __( 'User registration is currently not allowed.' ) );
			} elseif ( strpos( $redirect_to, 'about.phpupdated' ) ) {
				$errors-add( 'updated', __( 'strongYou have successfully updated WordPress!strong Please log back in to see what’s new.' ), 'message' );
			} elseif ( WP_Recovery_Mode_Link_ServiceLOGIN_ACTION_ENTERED === $action ) {
				$errors-add( 'enter_recovery_mode', __( 'Recovery Mode Initialized. Please log in to continue.' ), 'message' );
			}
		}

		
		  Filters the login page errors.
		 
		  @since 3.6.0
		 
		  @param WP_Error $errors      WP Error object.
		  @param string   $redirect_to Redirect destination URL.
		 
		$errors = apply_filters( 'wp_login_errors', $errors, $redirect_to );

		 Clear any stale cookies.
		if ( $reauth ) {
			wp_clear_auth_cookie();
		}

		login_header( __( 'Log In' ), '', $errors );

		if ( isset( $_POST['log'] ) ) {
			$user_login = ( 'incorrect_password' === $errors-get_error_code()  'empty_password' === $errors-get_error_code() )  esc_attr( wp_unslash( $_POST['log'] ) )  '';
		}

		$rememberme = ! empty( $_POST['rememberme'] );

		if ( $errors-has_errors() ) {
			$aria_describedby_error = ' aria-describedby=login_error';
		} else {
			$aria_describedby_error = '';
		}

		wp_enqueue_script( 'user-profile' );
		

		form name=loginform id=loginform action=php echo esc_url( site_url( 'wp-login.php', 'login_post' ) );  method=post
			p
				label for=user_loginphp _e( 'Username or Email Address' ); label
				input type=text name=log id=user_loginphp echo $aria_describedby_error;  class=input value=php echo esc_attr( $user_login );  size=20 autocapitalize=off 
			p

			div class=user-pass-wrap
				label for=user_passphp _e( 'Password' ); label
				div class=wp-pwd
					input type=password name=pwd id=user_passphp echo $aria_describedby_error;  class=input password-input value= size=20 
					button type=button class=button button-secondary wp-hide-pw hide-if-no-js data-toggle=0 aria-label=php esc_attr_e( 'Show password' ); 
						span class=dashicons dashicons-visibility aria-hidden=truespan
					button
				div
			div
			php

			
			  Fires following the 'Password' field in the login form.
			 
			  @since 2.1.0
			 
			do_action( 'login_form' );

			
			p class=forgetmenotinput name=rememberme type=checkbox id=rememberme value=forever php checked( $rememberme );   label for=remembermephp esc_html_e( 'Remember Me' ); labelp
			p class=submit
				input type=submit name=wp-submit id=wp-submit class=button button-primary button-large value=php esc_attr_e( 'Log In' );  
				php

				if ( $interim_login ) {
					
					input type=hidden name=interim-login value=1 
					php
				} else {
					
					input type=hidden name=redirect_to value=php echo esc_attr( $redirect_to );  
					php
				}

				if ( $customize_login ) {
					
					input type=hidden name=customize-login value=1 
					php
				}

				
				input type=hidden name=testcookie value=1 
			p
		form

		php

		if ( ! $interim_login ) {
			
			p id=nav
				php

				if ( get_option( 'users_can_register' ) ) {
					$registration_url = sprintf( 'a href=%s%sa', esc_url( wp_registration_url() ), __( 'Register' ) );

					 This filter is documented in wp-includesgeneral-template.php 
					echo apply_filters( 'register', $registration_url );

					echo esc_html( $login_link_separator );
				}

				
				a href=php echo esc_url( wp_lostpassword_url() ); php _e( 'Lost your password' ); a
			p
			php
		}

		$login_script  = 'function wp_attempt_focus() {';
		$login_script .= 'setTimeout( function() {';
		$login_script .= 'try {';

		if ( $user_login ) {
			$login_script .= 'd = document.getElementById( user_pass ); d.value = ;';
		} else {
			$login_script .= 'd = document.getElementById( user_login );';

			if ( $errors-get_error_code() === 'invalid_username' ) {
				$login_script .= 'd.value = ;';
			}
		}

		$login_script .= 'd.focus(); d.select();';
		$login_script .= '} catch( er ) {}';
		$login_script .= '}, 200);';
		$login_script .= }n;  End of wp_attempt_focus().

		
		  Filters whether to print the call to `wp_attempt_focus()` on the login screen.
		 
		  @since 4.8.0
		 
		  @param bool $print Whether to print the function call. Default true.
		 
		if ( apply_filters( 'enable_login_autofocus', true ) && ! $error ) {
			$login_script .= wp_attempt_focus();n;
		}

		 Run `wpOnload()` if defined.
		$login_script .= if ( typeof wpOnload === 'function' ) { wpOnload() };

		
		script type=textjavascript
			php echo $login_script; 
		script
		php

		if ( $interim_login ) {
			
			script type=textjavascript
			( function() {
				try {
					var i, links = document.getElementsByTagName( 'a' );
					for ( i in links ) {
						if ( links[i].href ) {
							links[i].target = '_blank';
							links[i].rel = 'noreferrer noopener';
						}
					}
				} catch( er ) {}
			}());
			script
			php
		}

		login_footer();
		break;
}  End action switch.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 是什么? 这个代码可以在 WordPress 后台的 functions.php 文件中使用: function remove_wp_logo() { global $wp_admin_bar; $wp_admin_bar->remove_menu('wp-logo'); } add_action('wp_before_admin_bar_render', 'remove_wp_logo'); ### 回答2: 要删除WordPress后台左上角WordPress图标,可以通过以下步骤修改代码: 1. 首先,进入你的WordPress网站的后台管理页面。 2. 找到"外观"(Appearance)菜单,然后选择"编辑"(Editor)选项。 3. 在编辑器页面的右侧,你会看到一个名为"主题功能文件"(Theme functions file)的文件。 4. 点击"主题功能文件"来打开它进行编辑。 5. 在这个文件中,你需要添加一行代码来隐藏WordPress图标。代码如下: add_action('admin_bar_menu', 'remove_wp_logo', 999); function remove_wp_logo( $wp_admin_bar ) { $wp_admin_bar->remove_node('wp-logo'); } 6. 添加完代码后,点击"更新文件"(Update file)按钮保存修改。 7. 现在,你可以返回到WordPress后台管理页面,刷新页面,就会发现左上角的WordPress图标已经被删除了。 需要注意的是,修改主题功能文件可能涉及修改网站的核心文件,如果不小心修改了其他代码,可能会导致网站出现错误。因此,建议在修改代码之前备份你的网站,以防出现任何意外情况。此外,为了避免不必要的麻烦,建议在修改代码之前先使用子主题或者自定义CSS来进行样式修改。 ### 回答3: 要删除WordPress后台左上角WordPress图标,可以通过添加自定义代码到主题的functions.php文件来实现。 首先,进入WordPress后台,选择外观->编辑器,然后在右侧找到你当前正在使用的主题,点击“主题函数(functions.php)”进行编辑。 在functions.php文件的最后,添加以下代码: function remove_admin_bar_logo() { global $wp_admin_bar; $wp_admin_bar->remove_menu('wp-logo'); } add_action('wp_before_admin_bar_render', 'remove_admin_bar_logo', 0); 添加完代码后,点击“更新文件”保存更改,并刷新WordPress后台界面,左上角的WordPress图标将被成功删除。 这段代码使用了remove_menu函数来移除$wp_admin_bar对象中的wp-logo菜单,然后通过add_action函数将这个移除函数挂载到wp_before_admin_bar_render动作上,它会在显示管理栏之前被呈现。 这样,你就成功地删除了WordPress后台左上角的WordPress图标。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值