Hapus "Kategori:", "Tandai:", "Penulis:" dari the_archive_title

50

Saya memiliki kode berikut di archive.php tema saya:

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

Ini memberi saya judul seperti "Kategori: Rusia", "Tag: Amerika", "Penulis: John".

Saya ingin menghapus bagian "Kategori:", "Tag:" dan "Penulis:" dan cukup tampilkan kategori, tag, dan nama penulis.

Adakah yang tahu bagaimana mencapainya?

Terima kasih.

Nick
sumber

Jawaban:

80

Anda dapat memperluas get_the_archive_titlefilter yang telah saya sebutkan dalam jawaban ini

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;    
});
Pieter Goosen
sumber
2
Itu bekerja! Terima kasih, Pieter! Jika pengguna yang kurang paham teknologi mencari solusi yang sama: Anda menambahkan kode Pieter ke file functions.php Anda dan hanya itu!
Nick
Lakukan ini dalam tema anak sehingga perubahan Anda tidak akan hilang saat pembaruan tema.
Jürgen Paul
1
Ini berfungsi cukup baik, tetapi ada kasus untuk arsip dan taksonomi khusus.
JacobTheDev
Lihat solusi Ben Gillbanks untuk semua arsip jenis pos dan taksonomi.
Dan Knauss
25

Gunakan fungsi single_term_title()

Тимофей А.
sumber
Anda dapat melakukan banyak hal di WP, tetapi saya selalu memilih solusi paling sederhana. Terima kasih Timo.
f055
1
Yah itu tidak berfungsi untuk semua arsip yang bukan istilah. Jadi menurut saya bukan solusi yang sangat bagus.
GDY
9

Untuk judul CPT Tanpa kata: 'Arsip':

Jika Anda membuat templat arsip khusus untuk CPT, dan ingin menampilkan hanya judul CPT tanpa kata tambahan seperti "Arsip", gunakan fungsi berikut sebagai gantinya:

echo post_type_archive_title( '', false );

Dari developer.wordpress.org

Mike
sumber
5

Saya merasa ini lebih dari menyederhanakan hal-hal, tapi ini yang saya lakukan ...

<h1><?php echo str_replace("Archives: ", "", get_the_archive_title()); ?></h1>
Tisch
sumber
1
ini tidak akan berfungsi untuk situs web non-Inggris.
Maxwell sc
2

echo '<h1 class="page-title">' . single_cat_title( '', false ) . '</h1>'; di taxonomy-category.php di luar tema publik.

Hoang Oanh
sumber
1

Saya akan menggunakan filter dan meletakkannya di file functions.php

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

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

Dengan asumsi format selalu:, Prefix: Archive Namekita bisa menemukan titik dua pertama diikuti oleh spasi, dan hanya menampilkan konten setelah ini, menggunakan get_the_archive_title () dengan fungsi substr () dan strpos () PHP .

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

Anda dapat menggunakan yang berikut untuk hanya memiliki judul tanpa awalan

single_cat_title();
Xiomara
sumber
2
Meskipun benar, ini telah disarankan sebelumnya dalam jawaban lain.
Nicolai
-4

direktori: wp-includes

mengajukan: general-template.php

temukan fungsi: get_the_archive_title() ubah:

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

untuk:

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
Dragan Nikolic
sumber
3
Err, apakah Anda benar-benar menyarankan meretas inti di sini?
cjbj
3
Ini ide yang sangat, sangat buruk. Anda tidak dapat memperbarui sekarang tanpa membuat cabang terpisah.
fuxia
Sory jika saya melanggar peran saya memberikan kata untuk itu, tapi ini hanyalah solusi tidak berbahaya. Jadi, Anda mengatakan bahwa saya meretas situs saya sendiri atau saya tidak dapat membagikan kode dari file inti?
Dragan Nikolic
Yah, ini situs web Anda dan Anda dapat mengedit apa pun yang Anda inginkan - bahkan file inti. Namun, web akan rusak jika Anda memperbarui Wordpress Anda ...
Raccoon