Je souhaite afficher différents titres dans les archives de catégories par rapport au titre de la catégorie.
J'ai créé une fonction avec des instructions if à cet effet:
function category_titles_change() {
if (is_category('name1')) { ?>
new title 1
<?php }
elseif (is_category('name2')) { ?>
new title 2
<?php }
elseif (is_category('name3')) { ?>
new title 3
<?php }
}
Comment puis-je l'utiliser pour changer le <title></title>
affiché dans le <head></head>
J'ai essayé ceci:
function head_category_titles_change() {
if (is_category()) { ?>
<title>
<?php category_titles_change(); ?>
</title>
<?php }}
add_action( 'wp_head', 'head_category_titles_change' );
Mais cela ajoute un second <title>
au <head>
en plus du titre par défaut. Comment remplacer le titre par défaut dans les archives de catégories par les titres souhaités?
Eh bien merci pour cette question, je l'ai fait après avoir posté ce
function category_title( $title ){
if( is_category('name1') ){
$title = 'name1 title';
}elseif( is_category('name2') ){
$title = 'name2 title';
}
return $title;
}
add_filter( 'get_the_archive_title', 'category_title' );
J'espère que cela t'aides
Vous ne devriez pas utiliser l'action wp_head
- elle ne vous donne pas la possibilité de modifier un titre déjà imprimé. Mais WordPress a un crochet spécial pour cela: wp_title
.
Le code ci-dessous devrait faire l'affaire:
function my_change_category_title( $title, $sep ) {
if ( is_category('name1') ) {
return 'Cat 1 title';
}
if ( is_category('name2') ) {
return 'Cat 2 title';
}
...
return $title;
}
add_filter( 'wp_title', 'my_change_category_title', 10, 2 );
Vous pouvez également essayer d’utiliser pre_get_document_title
hook avec la même fonction de filtrage.