Eliminar "Categoría:", "Etiqueta:", "Autor:" de the_archive_title

51

Tengo el siguiente código en el archivo archive.php de mi tema:

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

Esto me da títulos como "Categoría: Rusia", "Etiqueta: América", "Autor: John".

Me gustaría eliminar la parte "Categoría:", "Etiqueta:" y "Autor:" y solo mostrar la categoría, la etiqueta y los nombres de los autores.

¿Alguien sabe cómo lograr esto?

Gracias.

Mella
fuente

Respuestas:

81

Puedes extender el get_the_archive_titlefiltro que he mencionado en esta respuesta

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
fuente
2
¡Eso funciona! Gracias Pieter! En caso de que los usuarios menos expertos en tecnología busquen la misma solución: ¡Agregue el código de Pieter a su archivo functions.php y listo!
Nick
Haga esto en un tema secundario para que sus cambios no se pierdan con una actualización del tema.
Jürgen Paul
1
Esto funciona bastante bien, pero faltan casos para archivos y taxonomías personalizadas.
JacobTheDev
Vea la solución de Ben Gillbanks para todos los archivos y taxonomías de tipo de publicación.
Dan Knauss el
25

Utilizar la función single_term_title()

Тимофей А.
fuente
Puedes hacer las cosas de muchas maneras en WP, pero siempre opté por las soluciones más simples. Gracias Timo
f055
1
Bueno, eso simplemente no funciona para todos los archivos que no son términos. Entonces, en mi opinión, no es una muy buena solución.
GDY
9

Para el título CPT Sin palabra: 'Archivo':

Si está creando una plantilla de archivo personalizada para un CPT y desea generar solo el título del CPT sin una palabra adicional como "Archivo", utilice la siguiente función:

echo post_type_archive_title( '', false );

De developer.wordpress.org

Miguel
fuente
5

Siento que esto ha terminado de simplificar las cosas, pero esto es lo que hice ...

<h1><?php echo str_replace("Archives: ", "", get_the_archive_title()); ?></h1>
Tisch
fuente
1
esto no funcionaría para un sitio web que no esté en inglés.
Maxwell sc
2

echo '<h1 class="page-title">' . single_cat_title( '', false ) . '</h1>'; en taxonomy-category.php fuera del público del tema.

Hoang Oanh
fuente
1

Usaría un filtro y lo pondría en un archivo functions.php

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

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

Suponiendo que el formato sea siempre: Prefix: Archive Namepodemos encontrar los dos primeros puntos seguidos de un espacio, y solo mostrar el contenido después de esto, usando get_the_archive_title () con las funciones substr () y 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
fuente
-2

Puede usar lo siguiente para tener solo el título sin el prefijo

single_cat_title();
Xiomara
fuente
2
Si bien es cierto, esto se ha sugerido anteriormente en otras respuestas.
Nicolai
-4

directorio: wp-includes

archivo: general-template.php

Función de búsqueda: get_the_archive_title() cambio:

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

a:

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
fuente
3
Err, ¿realmente estás sugiriendo hackear el núcleo aquí?
cjbj
3
Esta es una muy, muy mala idea. No puede actualizar ahora sin crear una rama separada.
fuxia
Sory si rompo los roles, le doy una palabra para eso, pero esta es solo otra solución, nada malicioso. Entonces, ¿dijiste que pirateo mi propio sitio o que no puedo compartir el código de los archivos principales?
Dragan Nikolic
Bueno, es tu sitio web y puedes editar lo que quieras, incluso los archivos principales. Sin embargo, la web se romperá si actualiza su Wordpress ...
Raccoon