the_archive_titleから「Category:」、「Tag:」、「Author:」を削除します


50

テーマのarchive.phpに次のコードがあります。

<?php the_archive_title( '<h1 class="page-title">', '</h1>' ); ?>

これにより、「カテゴリ:ロシア」、「タグ:アメリカ」、「著者:ジョン」などのタイトルが表示されます。

「Category:」、「Tag:」、「Author:」の部分を削除して、カテゴリ、タグ、および作成者の名前を表示したいだけです。

誰もこれを達成する方法を知っていますか?

ありがとうございました。

回答:


80

この回答で言及したget_the_archive_titleフィルターを拡張できます

add_filter( 'get_the_archive_title', function ($title) {    
    if ( is_category() ) {    
            $title = single_cat_title( '', false );    
        } elseif ( is_tag() ) {    
            $title = single_tag_title( '', false );    
        } elseif ( is_author() ) {    
            $title = '<span class="vcard">' . get_the_author() . '</span>' ;    
        } elseif ( is_tax() ) { //for custom post types
            $title = sprintf( __( '%1$s' ), single_term_title( '', false ) );
        }    
    return $title;    
});

2
動作します!ありがとう、ピーター!技術に詳しくないユーザーが同じ解決策を探している場合:Pieterのコードをfunctions.phpファイルに追加します。
ニック

子テーマでこれを行い、テーマの更新時に変更が失われないようにします。
ユルゲンポール

1
これは非常にうまく機能しますが、アーカイブとカスタム分類の場合が欠落しています。
-JacobTheDev

すべての投稿タイプのアーカイブと分類法に対する Ben Gillbanksのソリューションを参照してください。
ダンKnauss

25

機能を使用 single_term_title()


WPで多くの方法を実行できますが、私は常に最も簡単なソリューションを選択しました。ありがとうティモ。
f055

1
条件ではないすべてのアーカイブではうまくいきません。だから私の意見では非常に良い解決策ではありません。
GDY

9

単語のないCPTタイトルの場合:「アーカイブ」:

CPT用のカスタムアーカイブテンプレートを構築していて、「アーカイブ」などの余分な単語を使用せずにCPTのタイトルのみを出力する場合は、代わりに次の関数を使用します。

echo post_type_archive_title( '', false );

developer.wordpress.orgから


5

私はこれが物事を単純化することを超えているように感じますが、これは私がしたことです...

<h1><?php echo str_replace("Archives: ", "", get_the_archive_title()); ?></h1>

1
これは英語以外のWebサイトでは機能しません。
マクスウェルsc

2

echo '<h1 class="page-title">' . single_cat_title( '', false ) . '</h1>'; テーマのパブリック外のtaxonomy-category.php


1

フィルターを使用して、それをファイルfunctions.phpに入れます

add_filter( 'get_the_archive_title', 'replaceCategoryName'); 
   function replaceCategoryName ($title) {

   $title =  single_cat_title( '', false );
   return $title; 
}

0

フォーマットが常に:Prefix: Archive Nameであると仮定すると、最初のコロンとそれに続くスペースを見つけることができ、get_the_archive_title()とPHPのsubstr()およびstrpos()関数を使用して、その後のコンテンツのみを表示できます。

<?php // Only show the portion of the string following the first ": "
  echo substr(get_the_archive_title(), strpos(get_the_archive_title(), ': ') + 2);
?>

-2

以下を使用して、接頭辞なしのタイトルのみにすることができます

single_cat_title();

2
本当ですが、これは他の回答で以前に提案されました。
ニコライ

-4

ディレクトリ: wp-includes

ファイル: general-template.php

関数の検索:get_the_archive_title() 変更:

if ( is_category() ) {
        $title = sprintf( __( 'Category: %s' ), single_cat_title( '', false ) );
    } elseif ( is_tag() ) {
        $title = sprintf( __( 'Tag: %s' ), single_tag_title( '', false ) );
    } elseif ( is_author() ) {
        $title = sprintf( __( 'Autor: %s' ), '<span class="vcard">' . get_the_author() . '</span>' );
    }

に:

if ( is_category() ) {
        $title = sprintf( __( '%s' ), single_cat_title( '', false ) );
    } elseif ( is_tag() ) {
        $title = sprintf( __( '%s' ), single_tag_title( '', false ) );
    } elseif ( is_author() ) {
        $title = sprintf( __( '%s' ), '<span class="vcard">' . get_the_author() . '</span>' );
    }//if you want to remove or just change text if you need to

3
エラー、本当にここでコアをハッキングすることを提案していますか?
cjbj

3
これは非常に悪い考えです。別のブランチを作成せずに今すぐ更新することはできません。
FUXIA

役に立たない場合は、そのことを一言述べますが、これは悪意のあるソリューションではありません。それで、あなたは私が自分のサイトをハッキングするか、コアファイルからコードを共有できないと言ったのですか?
ドラガン

まあ、それはあなたのウェブサイトであり、あなたは好きなものを編集することができます-コアファイルも。あなたのWordpressを更新する場合は、ウェブが...壊れます
アライグマ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.