Supprimer “Catégorie:”, “Tag:”, “Auteur:” de the_archive_title

51

J'ai le code suivant dans le fichier archive.php de mon thème:

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

Cela me donne des titres comme "Catégorie: Russie", "Tag: Amérique", "Auteur: John".

Je souhaite supprimer les parties "Catégorie:", "Tag:" et "Auteur:" et simplement afficher les noms de catégorie, de balise et d’auteur.

Est ce que quelqu'un sait comment accomplir cela?

Je vous remercie.

pseudo
la source

Réponses:

81

Vous pouvez étendre le get_the_archive_titlefiltre que j'ai mentionné dans cette réponse

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
la source
2
Ça marche! Merci Pieter! Au cas où des utilisateurs moins avertis rechercheraient la même solution: vous ajoutez le code de Pieter à votre fichier functions.php et le tour est joué!
Nick
Faites cela dans un thème enfant pour que vos modifications ne soient pas perdues lors de la mise à jour d'un thème.
Jürgen Paul
1
Cela fonctionne plutôt bien, mais il manque des cas pour les archives et les taxonomies personnalisées.
JacobTheDev
Voir la solution de Ben Gillbanks pour toutes les archives et taxonomies de type poste.
Dan Knauss
25

Utilisez la fonction single_term_title()

Тимофей А.
la source
Vous pouvez faire les choses de nombreuses façons dans WP, mais j'ai toujours opté pour les solutions les plus simples. Merci Timo.
f055
1
Cela ne fonctionne pas pour toutes les archives qui ne sont pas des termes. Donc, à mon avis, pas une très bonne solution.
GDY
9

Pour titre CPT Sans mot: 'Archive':

Si vous construisez un modèle d'archive personnalisé pour un CPT et souhaitez uniquement afficher le titre du CPT sans mot supplémentaire tel que «Archive», utilisez plutôt la fonction suivante:

echo post_type_archive_title( '', false );

De developer.wordpress.org

Mike
la source
5

J'ai l'impression que c'est trop simplifier les choses, mais c'est ce que j'ai fait ...

<h1><?php echo str_replace("Archives: ", "", get_the_archive_title()); ?></h1>
Tisch
la source
1
cela ne fonctionnerait pas pour un site Web non anglais.
Maxwell sc
2

echo '<h1 class="page-title">' . single_cat_title( '', false ) . '</h1>'; dans taxonomy-category.php en dehors du public du thème.

Hoang Oanh
la source
1

Je voudrais utiliser un filtre et le mettre dans un fichier functions.php

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

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

En supposant que le format soit toujours :,Prefix: Archive Name nous pouvons simplement trouver le premier deux-points suivi d'un espace et afficher uniquement le contenu après cela, en utilisant get_the_archive_title () avec les fonctions substr () et strpos () de 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
la source
-2

Vous pouvez utiliser ce qui suit pour n'avoir que le titre sans le préfixe

single_cat_title();
Xiomara
la source
2
Bien que cela soit vrai, cela a déjà été suggéré dans d’autres réponses.
Nicolai
-4

annuaire: wp-includes

fichier: general-template.php

fonction de recherche: get_the_archive_title() changement:

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
Dragan Nikolic
la source
3
Euh, suggérez-vous vraiment de pirater le noyau ici?
cjbj
3
C'est une très, très mauvaise idée. Vous ne pouvez pas mettre à jour maintenant sans créer une branche distincte.
fuxia
Sory si je casse les rôles je donne un mot pour cela, mais ceci est juste une autre solution rien de malicieux. Alors, vous avez dit que je piraterais mon propre site ou que je ne pouvais pas partager le code à partir de fichiers core?
Dragan Nikolic
Eh bien, c'est votre site Web et vous pouvez éditer ce que vous voulez, même les fichiers principaux. Cependant, si vous mettez à jour votre Wordpress, le web se cassera ...
Raccoon