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.

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

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


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


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>

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.


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

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

-2

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

single_cat_title();

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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.