it-swarm.com.de

Kategorietitel ersetzen

Ich möchte andere Titel als den Kategorietitel in Kategoriearchiven anzeigen.

Ich habe zu diesem Zweck eine Funktion mit if-Anweisungen erstellt:

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 }
}

Wie kann ich damit den <title></title> ändern, der im <head></head> angezeigt wird?

Ich habe das versucht:

function head_category_titles_change() {    
 if (is_category()) { ?> 
 <title> 
<?php category_titles_change(); ?> 
 </title> 
<?php }}
add_action( 'wp_head', 'head_category_titles_change' );

Dabei wird jedoch zusätzlich zum Standardtitel ein zweiter <title> zum <head> hinzugefügt. Wie kann ich den Standardtitel in Kategoriearchiven durch meine gewünschten Titel ersetzen?

1
IXN

Nun, danke für diese Frage, ich habe dies getan, nachdem Sie dies gepostet haben

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' );

Hoffe das hilft

3
sagar

Sie sollten wp_head action nicht verwenden - es gibt Ihnen keine Möglichkeit, den bereits gedruckten Titel zu ändern. Aber WordPress hat einen speziellen Haken dafür: wp_title .

Der folgende Code sollte den Trick machen:

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 );

Sie können auch versuchen, pre_get_document_title hook mit derselben Filterfunktion zu verwenden.

2