Entfernen Sie "Kategorie:", "Tag:", "Autor:" aus dem_Archivtitel

50

Ich habe folgenden Code in der archive.php meines Themas:

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

Dies gibt mir Titel wie "Kategorie: Russland", "Tag: Amerika", "Autor: John".

Ich möchte den Teil "Kategorie:", "Tag:" und "Autor:" entfernen und nur die Kategorien-, Tag- und Autorennamen anzeigen.

Weiß jemand, wie man das erreicht?

Danke.

Nick
quelle

Antworten:

79

Sie können den get_the_archive_titleFilter, den ich in dieser Antwort erwähnt habe, erweitern

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
quelle
2
Das funktioniert! Danke, Pieter! Falls weniger technisch versierte Benutzer nach der gleichen Lösung suchen: Fügen Sie den Code von Pieter zu Ihrer Datei functions.php hinzu und fertig!
Nick
Führen Sie dies in einem untergeordneten Thema aus, damit Ihre Änderungen bei einer Themenaktualisierung nicht verloren gehen.
Jürgen Paul
1
Dies funktioniert ziemlich gut, aber es fehlen Fälle für Archive und benutzerdefinierte Taxonomien.
JacobTheDev
Sehen Sie sich die Lösung von Ben Gillbanks für alle Post-Type-Archive und Taxonomien an.
Dan Knauss
25

Funktion verwenden single_term_title()

Тимофей А.
quelle
In WP kann man viele Dinge tun, aber ich habe mich immer für die einfachsten Lösungen entschieden. Vielen Dank, Timo.
f055
1
Nun, das funktioniert einfach nicht für alle Archive, die keine Begriffe sind. Also meiner Meinung nach keine sehr gute Lösung.
GDY
9

Für CPT-Titel ohne Wort: 'Archiv':

Wenn Sie eine benutzerdefinierte Archivvorlage für einen CPT erstellen und nur den Titel des CPT ohne zusätzliches Wort wie "Archiv" ausgeben möchten, verwenden Sie stattdessen die folgende Funktion:

echo post_type_archive_title( '', false );

Von developer.wordpress.org

Mike
quelle
5

Ich habe das Gefühl, dass es damit zu weit geht, Dinge zu vereinfachen, aber das habe ich getan ...

<h1><?php echo str_replace("Archives: ", "", get_the_archive_title()); ?></h1>
Tisch
quelle
1
Dies würde für eine nicht-englische Website nicht funktionieren.
Maxwell sc
2

echo '<h1 class="page-title">' . single_cat_title( '', false ) . '</h1>'; in taxonomy-category.php außerhalb der Öffentlichkeit des Themas.

Hoang Oanh
quelle
1

Ich würde einen Filter verwenden und ihn in eine Datei functions.php einfügen

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

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

Angenommen, das Format ist immer :,Prefix: Archive Name wir können nur den ersten Doppelpunkt, gefolgt von einem Leerzeichen, finden und erst den Inhalt danach anzeigen , indem wir get_the_archive_title () mit den PHP-Funktionen substr () und strpos () verwenden.

<?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
quelle
-2

Sie können Folgendes verwenden, um nur den Titel ohne das Präfix zu haben

single_cat_title();
Xiomara
quelle
2
Obwohl dies zutrifft, wurde dies bereits in anderen Antworten vorgeschlagen.
Nicolai
-4

Verzeichnis: wp-includes

Datei: general-template.php

find function: get_the_archive_title() change:

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

zu:

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
quelle
3
Ähm, schlagen Sie wirklich vor, den Kern hier zu hacken?
cjbj
3
Das ist eine sehr, sehr schlechte Idee. Sie können jetzt nicht aktualisieren, ohne einen separaten Zweig zu erstellen.
fuxia
Wenn ich die Rollen breche, gebe ich ein Wort dafür, aber dies ist nur eine andere Lösung, die nichts Bösartiges ist. Sie sagten also, dass ich meine eigene Site hacke oder keinen Code aus Kerndateien freigeben kann?
Dragan Nikolic
Nun, es ist Ihre Website und Sie können bearbeiten, was Sie wollen - sogar die Kerndateien. Allerdings wird das Web brechen, wenn Sie Ihre Wordpress aktualisieren ...
Waschbär