如何更改wp-login.php页面标题?

时间:2017-06-07 作者:henrywright

我一直在用document_title_parts 钩子可以更改某些前端页面的页面标题。然而,这似乎不适用于登录、注册和密码管理页面。

如何更改wp登录。php页面<title>?

3 个回复
最合适的回答,由SO网友:birgire 整理而成

它显示为src

<title><?php echo get_bloginfo( \'name\', \'display\' ) . $separator . $title; ?></title>
其中,分隔符为:

    $separator = is_rtl() ? \' &rsaquo; \' : \' &lsaquo; \';
以及$title 零件来源:

login_header( $title = \'Some title\' , ... );
但看起来你已经检查过了,我看你已经提交了一张罚单#40812 为额外的过滤器更改分隔符。

要想改变分隔符,一个解决方法是使用输出缓冲来代替它。

SO网友:Dave Romsey

正如@birgire所指出的问题,在wp-login.php 很难做到这一点,因为我们没有像前端产品那样的各种标题更改过滤器。

但是,我们可以检测到wp-login.php 然后确定用户正在执行的操作:登录、注册或重置密码。

这个<title> 标记上wp-login.php 由三部分组成:

<title><?php echo get_bloginfo( \'name\', \'display\' ) . $separator . $title; ?></title>
我们可以改变get_bloginfo( \'name\', \'display\' )$title 但不幸的是,$separator 无法使用此处概述的技术进行更改。

这个option_{option_name} 过滤器(option_blogname 在这种情况下),可用于修改get_bloginfo( \'name\', \'display\' ) 标题的一部分。

这个$title, 已传递给__() 这意味着我们可以拦截它并使用gettext 滤器

$title 已分配__(\'Log In\'), __(\'Registration Form\'), 和__(\'Lost Password\') 分别在登录、注册和丢失密码页面上。

该代码将连接上相应的过滤器wp-login.php 对于标题的两个可更改部分。

/**
 * Detect if we\'re on wp-login.php and wire up the appropriate filters
 * based on what action being taken by the user.
 * idea via https://wordpress.stackexchange.com/a/12865/2807
 */
add_action( \'init\', \'wpse_login_register_password_title\' );
function wpse_login_register_password_title() {

    if ( isset( $GLOBALS[\'pagenow\'] ) && $GLOBALS[\'pagenow\'] === \'wp-login.php\' ) {

        // Registration
        if ( ! empty( $_REQUEST[\'action\'] ) && $_REQUEST[\'action\'] === \'register\' ) {
            add_filter( \'option_blogname\', \'wpse_login_page_register_blogname\', 10, 1 );
            add_filter( \'gettext\', \'wpse_login_page_register_title\', 10, 3 );
        }

        // Password
        else if ( ! empty( $_REQUEST[\'action\'] ) && $_REQUEST[\'action\'] === \'lostpassword\' ) {
            add_filter( \'option_blogname\', \'wpse_login_page_password_blogname\', 10, 1 );
            add_filter( \'gettext\', \'wpse_login_page_password_title\', 10, 3 );
        }

        // Log in
        else {
            add_filter( \'option_blogname\', \'wpse_login_page_blogname\', 10, 1 );
            add_filter( \'gettext\', \'wpse_login_page_title\', 10, 3 );
        }
    }
}
以下是将修改每个wp-login.php 行动。

/**
 * Change get_bloginfo( \'name\', \'display\' ) portion of the <title>\'s
 * text on the wp-login.php page.
 * Immediately remove the filters so that they only run once.
 */
function wpse_login_page_blogname( $value ) {
    // Log in
    remove_filter( \'option_blogname\', \'wpse_login_page_blogname\', 10, 1 );
    return \'This is the changed blog name for the login page.\';
}

function wpse_login_page_register_blogname( $value ) {
    // Register
    remove_filter( \'option_blogname\', \'wpse_login_page_register_blogname\', 10, 1 );
    return \'This is the changed blog name for the register page.\';
}

function wpse_login_page_password_blogname( $value ) {
    // Reset password
    remove_filter( \'option_blogname\', \'wpse_login_page_password_blogname\', 10, 1 );
    return \'This is the changed blog name for the password reset page.\';
}
最后,这些过滤器将修改$title 每个wp-login.php 行动。

/**
 * Translate the $title portion of the <title>\'s text on the wp-login.php page.
 * Immediately remove the filters so that they only run once.
 *
 * @param string $translation  Translated text.
 * @param string $text         Text to translate.
 * @param string $domain       Text domain. Unique identifier for retrieving translated strings.
 *
 * @return string
 */
function wpse_login_page_title( $translation, $text, $domain ) {
    // Log in
    // The \'default\' text domain is reserved for the WP core.
    if ( \'default\' === $domain && \'Log In\' === $text ) {
        $translation = \'This is the changed "Log In" text.\';
        remove_filter( \'gettext\', \'wpse_login_page_title\', 10, 3 );
    }
    return $translation;
}

function wpse_login_page_register_title( $translation, $text, $domain ) {
    // Register
    if ( \'default\' === $domain && \'Registration Form\' === $text ) {
        $translation = \'This is the changed "Registration Form" text.\';
        remove_filter( \'gettext\', \'wpse_login_page_register_title\', 10, 3 );
    }
    return $translation;
}

function wpse_login_page_password_title( $translation, $text, $domain ) {
    // Reset password
    if ( \'default\' === $domain && \'Lost Password\' === $text ) {
        $translation = \'This is the changed "Lost Password" text.\';
        remove_filter( \'gettext\', \'wpse_login_page_password_title\', 10, 3 );
    }
    return $translation;
}

SO网友:chop62

您可以在主题函数中使用此代码。php

function custom_login_title( $login_title ) {
return str_replace(array( \' &lsaquo;\', \' &#8212; WordPress\'), array( \' &bull;\', \' what ever you want\'),$login_title );
}
add_filter( \'login_title\', \'custom_login_title\' );
这将更改登录名。php<title> 登录(&B);博客名称你想要什么

您可以对所有管理页面执行相同的操作,但是$admin_title 而不是$login_title

结束

相关推荐

让插件php文件直接调用WordPress?

我的插件需要向插件中的另一个文件发出POST请求,该文件将接收请求并将其部分数据存储为wordpress中的新帖子。其想法是,使用此插件作为管理员的不同站点将能够通过此文件“接收”帖子,该文件将处理来自“主”站点的帖子请求。很好,但当我向特定的接收方php文件发出包含一些数据的POST请求时,该文件并不“知道”它是插件的一部分,因此我无法在插件中使用那里的数据。我该如何处理?谢谢