Usuń „Category:”, „Tag:”, „Author:” z the_archive_title


50

Mam następujący kod w pliku archive.php mojego motywu:

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

To daje mi tytuły takie jak „Kategoria: Rosja”, „Tag: America”, „Autor: John”.

Chciałbym usunąć część „Kategoria:”, „Tag:” i „Autor:” i po prostu wyświetlić nazwy kategorii, tagu i autora.

Czy ktoś wie, jak to osiągnąć?

Dziękuję Ci.

Odpowiedzi:


80

Możesz rozszerzyć get_the_archive_titlefiltr, o którym wspomniałem w tej odpowiedzi

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
To działa! Dzięki, Pieter! W przypadku, gdy mniej zaawansowani użytkownicy szukają tego samego rozwiązania: dodajesz kod Pietera do pliku functions.php i to wszystko!
Nick

Zrób to w motywie potomnym, aby zmiany nie zginęły po aktualizacji motywu.
Jürgen Paul,

1
Działa to całkiem dobrze, ale brakuje skrzynek na archiwa i niestandardowe taksonomie.
JacobTheDev,

Zobacz rozwiązanie Bena Gillbanksa do wszystkich archiwów typów i taksonomii.
Dan Knauss

25

Użyj funkcji single_term_title()


W WP możesz robić różne rzeczy, ale zawsze wybrałem najprostsze rozwiązania. Dzięki Timo.
f055

1
Cóż, to po prostu nie działa dla wszystkich archiwów, które nie są terminami. Więc moim zdaniem niezbyt dobre rozwiązanie.
GDY

9

W przypadku tytułu CPT Bez słowa: „Archiwum”:

Jeśli budujesz niestandardowy szablon archiwum dla CPT i chcesz wypisać tylko tytuł CPT bez dodatkowego słowa, takiego jak „Archiwum”, użyj zamiast tego następującej funkcji:

echo post_type_archive_title( '', false );

From developer.wordpress.org


5

Wydaje mi się, że to upraszcza, ale to właśnie zrobiłem ...

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

1
nie działałoby to w przypadku witryny w języku innym niż angielski.
Maxwell sc

2

echo '<h1 class="page-title">' . single_cat_title( '', false ) . '</h1>'; w taxonomy-category.php poza tematem publicznym.


1

Chciałbym użyć filtru i umieścić go w pliku functions.php

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

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

0

Zakładając, że format jest zawsze: Prefix: Archive Namemożemy po prostu znaleźć pierwszy dwukropek, po którym następuje spacja, i po tym wyświetlić zawartość, używając get_the_archive_title () z funkcjami PHP substr () i 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

Możesz użyć następujących elementów, aby mieć tylko tytuł bez prefiksu

single_cat_title();

2
Chociaż jest to prawda, zostało to zasugerowane wcześniej w innych odpowiedziach.
Nicolai

-4

informator: wp-includes

plik: general-template.php

znajdź funkcję: get_the_archive_title() zmień:

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

do:

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
Eee, czy naprawdę sugerujesz zhakowanie rdzenia tutaj?
cjbj

3
To bardzo, bardzo zły pomysł. Nie możesz teraz zaktualizować bez utworzenia osobnego oddziału.
fuxia

Sory, jeśli przerywam role, daję na to słowo, ale to tylko kolejne rozwiązanie nic złego. Więc powiedziałeś, że włamuję się na własną stronę lub nie mogę udostępniać kodu z podstawowych plików?
Dragan Nikolic

Cóż, to twoja strona internetowa i możesz edytować cokolwiek chcesz - nawet podstawowe pliki. Jednak sieć ulegnie awarii, jeśli zaktualizujesz Wordpress ...
Raccoon
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.