Eliminar "Categoría:", "Etiqueta:", "Autor:" de the_archive_title
Tengo el siguiente código en mi archivo archive.php del tema:
<?php the_archive_title( '<h1 class="page-title">', '</h1>' ); ?>
Esto me muestra títulos como "Categoría: Rusia", "Etiqueta: América", "Autor: John".
Me gustaría eliminar la parte de "Categoría:", "Etiqueta:" y "Autor:" y mostrar solo los nombres de la categoría, etiqueta y autor.
¿Alguien sabe cómo lograr esto?
Gracias.
Puedes extender el filtro get_the_archive_title
que mencioné 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()) { // para tipos de contenido personalizados
$title = sprintf(__('%1$s'), single_term_title('', false));
} elseif (is_post_type_archive()) {
$title = post_type_archive_title('', false);
}
return $title;
});

¡Eso funciona! ¡Gracias, Pieter! En caso de que usuarios menos técnicos estén buscando la misma solución: Añades el código de Pieter a tu archivo functions.php y ¡eso es todo!

Haz esto en un tema hijo para que tus cambios no se pierdan al actualizar el tema.

Esto funciona bastante bien, pero faltan casos para archivos y taxonomías personalizadas.

Consulta la solución de Ben Gillbanks para todos los archivos de tipos de entrada y taxonomías.

En WordPress hay muchas formas de hacer las cosas, pero siempre opté por las soluciones más simples. Gracias Timo.

Bueno, eso simplemente no funciona para todos los archivos que no son términos. Así que en mi opinión no es una solución muy buena.

@GDY ¿podrías decir qué elementos que no son términos deberían aparecer en los archivos?

Para el título de CPT sin la palabra: 'Archivo':
Si estás construyendo una plantilla de archivo personalizada para un CPT (Custom Post Type) y deseas mostrar solo el título del CPT sin palabras adicionales como "Archivo", utiliza la siguiente función:
post_type_archive_title();
Fuente: developer.wordpress.org

Genial - esta función es justo lo que necesitaba. Ten en cuenta que el primer parámetro ya tiene como valor predeterminado una cadena vacía y el segundo tiene como valor predeterminado true, lo que mostraría el resultado en lugar de devolverlo... por lo que podrías simplemente usar post_type_archive_title()
para obtener exactamente el mismo resultado que echo post_type_archive_title( '', false )

A partir de WordPress 5.5 puedes eliminar el prefijo con este hook:
add_filter('get_the_archive_title_prefix','__return_empty_string');

Más contexto: https://wordpress.stackexchange.com/a/408321/152624

get_the_archive_title_prefix()
devuelve una cadena, por lo que el callback debe ser '__return_empty_string'
en su lugar.

Asumiendo que el formato siempre es: Prefijo: Nombre del Archivo
, podemos simplemente encontrar los dos puntos seguidos de un espacio, y mostrar solo el contenido después de esto, usando get_the_archive_title() con las funciones substr() y strpos() de PHP.
<?php // Mostrar solo la porción de la cadena que sigue al primer ": "
echo substr(get_the_archive_title(), strpos(get_the_archive_title(), ': ') + 2);
?>

directorio: wp-includes
archivo: general-template.php
encontrar función: get_the_archive_title()
cambiar:
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>' );
}//si deseas eliminar o simplemente cambiar el texto si lo necesitas

Esta es una idea muy, muy mala. No puedes actualizar ahora sin crear una rama separada.

Perdón si rompo las reglas, doy mi palabra por eso, pero esto es solo otra solución, nada malicioso. Entonces, ¿estás diciendo que hackeo mi propio sitio o que no puedo compartir código de los archivos del núcleo?
