J'utilise le crochet document_title_parts
pour changer le titre de la page avant. Toutefois, cela ne semble pas fonctionner pour les pages de connexion, d’enregistrement et de gestion des mots de passe.
Comment changer la page <title>
de wp-login.php?
Il semble que ce ne soit pas facilement accessible car il est affiché comme src:
<title><?php echo get_bloginfo( 'name', 'display' ) . $separator . $title; ?></title>
où le séparateur est:
$separator = is_rtl() ? ' › ' : ' ‹ ';
et la partie $title
provient de:
login_header( $title = 'Some title' , ... );
Mais il semble que vous ayez déjà vérifié cela, car je vois que vous avez classé un ticket # 40812 pour un filtre supplémentaire permettant de changer le séparateur .
Une solution de contournement qui me vient à l’esprit, pour changer le séparateur , serait d’utiliser output buffering hacks pour le remplacer.
Comme @birgire l'a fait remarquer, il est difficile de modifier le texte du titre dans wp-login.php
, car nous n'avons pas les divers filtres de modification du titre comme les offres frontales.
Cependant, nous pouvons détecter si nous sommes sur wp-login.php
et déterminer ensuite l'action que l'utilisateur prend: se connecter, s'inscrire ou réinitialiser son mot de passe.
La balise <title>
sur wp-login.php
est composée de trois parties:
<title><?php echo get_bloginfo( 'name', 'display' ) . $separator . $title; ?></title>
Nous pouvons modifier les zones get_bloginfo( 'name', 'display' )
et $title
, mais malheureusement, $separator
ne peut pas être modifié avec la technique décrite ici.
Le filtre option_{option_name}
(option_blogname
dans ce cas) peut être utilisé pour modifier la partie get_bloginfo( 'name', 'display' )
du titre.
Le $title
est passé à __()
, ce qui signifie que nous pouvons l’intercepter et le modifier à l’aide du filtre gettext
.
$title
se voit attribuer __('Log In')
, __('Registration Form')
et __('Lost Password')
sur les pages de connexion, d’enregistrement et de mot de passe perdu.
Ce code connectera les filtres appropriés sur wp-login.php
pour les deux parties modifiables du titre.
/**
* 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 );
}
}
}
Voici les filtres qui modifieront la partie blogname de la balise title pour chacune des actions 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.';
}
Enfin, ce sont les filtres qui modifieront la partie $title
de la balise title pour chacune des actions 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;
}
Vous pouvez utiliser ce code dans vos thèmes functions.php
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' );
Ceci changera le login.php <title>
en Connexion • Nommez ce que vous voulez
Vous pouvez faire la même chose pour toutes les pages d'administration, mais ce serait $admin_title
au lieu de $login_title