web-dev-qa-db-ja.com

カテゴリタイトルを置き換える

カテゴリアーカイブでは、カテゴリタイトルとは異なるタイトルを表示したいのですが。

この目的のためにif文を使って関数を作成しました。

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

これを使用して<title></title>に表示されている<head></head>を変更する方法

私はこれを試しました:

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

しかし、これはデフォルトのタイトルに加えて2番目の<title><head>に広告します。カテゴリアーカイブのデフォルトのタイトルを希望のタイトルに置き換えるにはどうすればよいですか。

1
IXN

よくこの質問を投稿した後私はこれをやったこの質問をありがとう

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

お役に立てれば

3
sagar

あなたはwp_headアクションを使うべきではありません - それはあなたにすでに印刷されているタイトルを修正する機会をあなたに与えません。しかしWordPressにはそのための特別なフックがあります: wp_title

以下のコードでうまくいくはずです。

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

同じフィルタ関数で pre_get_document_title フックを使ってみることもできます。

2