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.