web-dev-qa-db-fra.com

Remplacer les titres de catégories

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?

1
IXN

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

3
sagar

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.

2
Krzysiek Dróżdż