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.

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

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


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


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>

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.


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

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

-2

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

single_cat_title();

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.