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.

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

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


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


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>

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.


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

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

-2

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

single_cat_title();

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.