钩子文档

login_message

💡 云策文档标注

概述

login_message 过滤器用于自定义 WordPress 登录页面上方显示的消息,支持返回 HTML 标记。开发者可通过此 Hook 根据登录页面状态动态调整提示信息。

关键要点

  • 过滤器名称:login_message,参数为字符串 $message,表示登录消息文本
  • 应用场景:在 wp-login.php 登录表单上方显示自定义消息,可基于 action 参数(如 register、lostpassword)条件输出
  • 技术细节:使用 add_filter 注册回调函数,函数应接收并返回 $message;消息可包含 HTML 标记
  • 注意事项:注意区分 login_message 与 login_messages 过滤器,后者用于其他登录相关屏幕的消息修改

代码示例

add_filter( 'login_message', 'custom_login_message' );
function custom_login_message( $message ) {
    $action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : '';
    if ( $action === 'register' ) {
        $message .= '<p>注册前显示的消息</p>';
    }
    return $message;
}

📄 原文内容

Filters the message to display above the login form.

Parameters

$messagestring
Login message text.

More Information

The “login_message” filter is used to filter the message displayed on the WordPress login page above the login form. This filter can return HTML markup.

Source

$message = apply_filters( 'login_message', $message );

Changelog

Version Description
2.1.0 Introduced.

User Contributed Notes

  1. Skip to note 7 content

    Add additional message for wp-login.php

    add_filter( 'login_message', 'wpdocs_sr_custom_login_message' );
    function wpdocs_sr_custom_login_message( $message ) {
        $action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : '';
        $errors = new WP_Error();
    
        if ( isset( $_GET['key'] ) ) {
            $action = 'resetpass';
        }
    
        if ( isset( $_GET['checkemail'] ) ) {
            $action = 'checkemail';
        }
    
        switch ( $action ):
            case 'register':
                $message .= '<p class="message">' . __( 'Show message before register form.', 'text_domain' ) . '</p>';
                break;
            case 'checkemail':
                $message .= '<p class="message">' . __( 'Show message before after registration complete message.', 'text_domain' ) . '</p>';
                break;
            case 'lostpassword':
                $message .= '<p class="message">' . __( 'Show message before lost password form.', 'text_domain' ) . '</p>';
                break;
            default:
                // this message will show in login screen, before the login form.
                $message .= '<p class="message">' . __( 'Show message before login form.', 'text_domain' ) . '</p>';
                break;
        endswitch;
    
        return $message;
    }

  2. Skip to note 11 content

    Expanding upon Razon Komar Pal‘s code snippet.

    I found that there are a few other instances that you might wish to show a specific message or not show any additional messages if the provided one is great.

    add_filter( 'login_message', function ( $message ) {
        $action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : '';
    
        if ( isset( $_GET['key'] ) ) {
            $action = 'resetpass';
        }
    
        if ( isset( $_GET['checkemail'] ) ) {
            $action = 'checkemail';
        }
    
        if ( isset( $_GET['interim-login'] ) ) {
            $action = 'interim-login';
        }
    
        switch ( $action ) {
            case 'register':
                // $message .= __( 'Show message before register form.', 'text_domain' );
                break;
            case 'checkemail':
                // $message .= __( 'Show message before after registration complete message.', 'text_domain' );
                break;
            case 'lostpassword':
                // $message .= __( 'Show message before lost password form.', 'text_domain' );
                break;
            case 'rp':
                // $message .= __( 'Show message before reset password form.', 'text_domain' );
                break;
            case 'resetpass':
                // $message .= __( 'Show message after reset password form.', 'text_domain' );
                break;
            case 'interim-login':
                // $message .= __( 'Show message before interim login form.', 'text_domain' );
                break;
            default:
                // $message .= __( 'Show message before login form.', 'text_domain' );
                break;
        }
    
        return $message;
    } );

  3. Skip to note 12 content


    Anonymous User



    Be careful! There is another filter, with a similar description, but applied in a different place!
    https://developer.wordpress.org/reference/hooks/login_messages/

    THAT filter, is for example useful when you want to change the message on the “check mail” screen after a registration.