Mon thème prend en charge la balise title add_theme_support('title-tag')
, mais je ne peux pas supprimer la description wordpress bloginfo('description')
de <title>
sur la page d'accueil.
J'essaie d'utiliser ce filtre sans succès:
add_filter( 'wp_title', function ( $title, $sep ) {
global $paged, $page;
$title .= get_bloginfo( 'name' );
if ( is_home() || is_front_page() )
$title = "$title";
return $title;
}, 10, 2 );
Trouvé une solution:
add_filter( 'pre_get_document_title', function ( $title ) {
if(is_front_page()){
$title = get_bloginfo();
}
return $title;
});
wp_get_document_title()
a des filtres intéressants - pre_get_document_title
et document_title_parts
.
/**
* Filter the parts of the document title.
*
* @since 4.4.0
*
* @param array $title {
* The document title parts.
*
* @type string $title Title of the viewed page.
* @type string $page Optional. Page number if paginated.
* @type string $tagline Optional. Site description when on home page.
* @type string $site Optional. Site title when not on home page.
* }
*/
add_filter( 'document_title_parts', function ( $title ) {
if ( is_home() || is_front_page() )
unset($title['tagline']);
return $title;
}, 10, 1 );
En regardant en arrière; le filtre pre_get_document_title
est assez intéressant. Essentiellement, avant de traiter le titre, ce filtre sera exécuté. Si le résultat n'est pas vide (ce qui n'était pas prévu), le processus est court-circuité.
$title = apply_filters( 'pre_get_document_title', '' );
if ( ! empty( $title ) ) {
return $title;
}
Cela signifie que si vous définissez le titre, vous ne devez vous soucier de rien d'autre. La bonne chose est que vous pouvez faire des exceptions à la règle. Donc, pour répondre à votre question initiale:
add_filter( 'pre_get_document_title', function( $title ) {
if ( is_home() || is_front_page() ) {
// Return blog title on front page
$title = get_bloginfo( 'name' );
}
return $title;
} );
Le problème est la ligne:
$title = "$title";
En fait, vous remplacez simplement le $title
par lui-même. Si vous le changez en
$title = get_bloginfo( 'name' );
le titre renvoyé sur la page d'accueil sera le nom de votre blog. Vous pouvez y mettre n'importe quelle ficelle. En outre, il n'est pas nécessaire d'appeler les globals ici.
Voici du code qui devrait fonctionner:
add_filter( 'wp_title', function ( $title, $sep ) {
$title .= get_bloginfo( 'name' );
if ( is_home() || is_front_page() )
$title = "Any string you want to have";
return $title;
}, 10, 2 );