Ich habe den Hook document_title_parts
verwendet, um den Seitentitel für einige Front-End-Seiten zu ändern. Dies scheint jedoch nicht für die Anmelde-, Registrierungs- und Kennwortverwaltungsseiten zu funktionieren.
Wie kann ich die wp-login.php Seite <title>
ändern?
Es sieht so aus, als wäre es nicht leicht zugänglich, da es als angezeigt wird src:
<title><?php echo get_bloginfo( 'name', 'display' ) . $separator . $title; ?></title>
wo das Trennzeichen ist:
$separator = is_rtl() ? ' › ' : ' ‹ ';
und der $title
Teil kommt von:
login_header( $title = 'Some title' , ... );
Aber es sieht so aus, als hätten Sie dies bereits überprüft, da Sie ein Ticket # 40812 für einen zusätzlichen Filter zum Ändern des Trennzeichens eingereicht haben.
Ein Workaround, der in den Sinn kommt, um das Trennzeichen zu ändern, wäre die Verwendung von Ausgabepufferung Hacks, um es zu ersetzen.
Wie @birgire betonte, ist es nicht einfach, den Titeltext in wp-login.php
zu ändern, da wir nicht über die verschiedenen Filter zur Titeländerung verfügen, die das Front-End bietet.
Wir können jedoch feststellen, ob wp-login.php
aktiviert ist, und dann feststellen, welche Aktion der Benutzer ausführt: Anmelden, Registrieren oder Zurücksetzen seines Kennworts.
Das <title>
-Tag in wp-login.php
besteht aus drei Teilen:
<title><?php echo get_bloginfo( 'name', 'display' ) . $separator . $title; ?></title>
Wir können die Bereiche get_bloginfo( 'name', 'display' )
und $title
ändern, aber leider kann $separator
mit der hier beschriebenen Technik nicht geändert werden.
Mit dem Filter option_{option_name}
(in diesem Fall option_blogname
) können Sie den Teil get_bloginfo( 'name', 'display' )
des Titels ändern.
Der $title
wird an __()
übergeben, was bedeutet, dass wir ihn mit dem Filter gettext
abfangen und ändern können.
$title
ist auf den Anmelde-, Registrierungs- und Passwort-Seiten mit __('Log In')
, __('Registration Form')
und __('Lost Password')
belegt.
Mit diesem Code werden die entsprechenden Filter für wp-login.php
für beide veränderbaren Teile des Titels verbunden.
/**
* 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 );
}
}
}
Hier sind die Filter, die den Blogname-Teil des Title-Tags für jede der wp-login.php
-Aktionen ändern.
/**
* 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.';
}
Schließlich sind dies die Filter, die den $title
-Teil des title-Tags für jede der wp-login.php
-Aktionen ändern.
/**
* 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;
}
Sie können diesen Code in Ihrer themes functions.php verwenden
function custom_login_title( $login_title ) {
return str_replace(array( ' ‹', ' — WordPress'), array( ' •', ' what ever you want'),$login_title );
}
add_filter( 'login_title', 'custom_login_title' );
Dies ändert den login.php <title>
in Anmelden. • Blogname, was immer Sie wollen
Sie können dasselbe für alle Admin-Seiten tun, aber es wäre $admin_title
anstelle von $login_title