Solución: the_category() siempre genera enlaces. Usa foreach y get_the_category para obtener texto plano.
ES

Como obtener el nombre de categoría sin enlace en WordPress (get_the_category)

5.00 /5 - (30 votes )
Última verificación: 1 de mayo de 2026
6min de lectura
Tutorial
500+ proyectos WP
Desarrollador full-stack

La función estándar de WordPress the_category() es genial, pero tiene un defecto: siempre genera enlaces HTML (<a href="...">...</a>) a la página de archivo. Que pasa si estas construyendo un diseño personalizado (como una tarjeta de portfolio o un slider) donde la categoría debe ser texto plano, no un elemento clicable?

Descubre más sobre desarrollo profesional WordPress en WPPoland. La solución es usar get_the_category(), que devuelve un array de objetos en lugar de HTML listo.

#Código (fragmento)

Aqui tienes un fragmento listo para usar que puedes pegar en tu single.php o content.php:

<?php
// Obtener todas las categorias asignadas a la entrada actual
$categories = get_the_category();

if ( ! empty( $categories ) ) {
    // Mostrar el nombre de la primera categoria encontrada
    echo esc_html( $categories[0]->name );
}
?>

#Mostrar una lista separada por comas

Si tu entrada tiene multiples categorías y quieres listarlas como texto separado por comas:

<?php
$categories = get_the_category();
$output     = array();

if ( ! empty( $categories ) ) {
    foreach ( $categories as $category ) {
        // Anadir nombre al array
        $output[] = esc_html( $category->name );
    }
    // Unir el array en una cadena con separador
    echo implode( ', ', $output );
}
?>

#Por que get_the_category()?

Esta función te da acceso al objeto completo de categoría. Además del nombre (->name), puedes extraer:

  • ->slug (util para clases CSS, p. ej., <span class="cat-<?php echo $cat->slug; ?>">)
  • ->term_id (ID de la categoría)
  • ->description (descripción de la categoría)
  • ->count (número de entradas en esta categoría)

#Aplicación práctica

Un caso de uso comun es estilizar etiquetas en tarjetas de blog.

// Dentro del loop de WordPress
$cats = get_the_category();
$first_cat = !empty($cats) ? $cats[0] : null;

if ($first_cat) : ?>
    <span class="badge badge-<?php echo esc_attr($first_cat->slug); ?>">
        <?php echo esc_html($first_cat->name); ?>
    </span>
<?php endif; ?>

De esta forma, si tienes una categoría “Noticias”, obtendras la clase .badge-noticias, que puedes colorear fácilmente en CSS. Este nivel de control es algo que the_category() simplemente no ofrece.

#Uso avanzado: Categoría primaria con plugins SEO

Cuando una entrada tiene multiples categorías, es comun querer mostrar solo la “principal”:

function wppoland_get_primary_category_name() {
    $post_id = get_the_ID();

    // Intentar obtener categoria primaria de Yoast
    if ( class_exists( 'WPSEO_Primary_Term' ) ) {
        $primary = new WPSEO_Primary_Term( 'category', $post_id );
        $term_id = $primary->get_primary_term();
        if ( $term_id ) {
            $term = get_term( $term_id );
            if ( ! is_wp_error( $term ) ) {
                return esc_html( $term->name );
            }
        }
    }

    // Intentar obtener de RankMath
    $rankmath_primary = get_post_meta( $post_id, 'rank_math_primary_category', true );
    if ( $rankmath_primary ) {
        $term = get_term( $rankmath_primary );
        if ( ! is_wp_error( $term ) ) {
            return esc_html( $term->name );
        }
    }

    // Fallback: primera categoria
    $cats = get_the_category( $post_id );
    return ! empty( $cats ) ? esc_html( $cats[0]->name ) : '';
}

#Estilizacion de etiquetas de categoría

CSS para badges de categoría elegantes:

.badge {
    display: inline-block;
    padding: 0.25rem 0.75rem;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border-radius: 9999px;
    background: #e5e7eb;
    color: #374151;
}

/* Colores por categoria */
.badge-noticias {
    background: #dbeafe;
    color: #1e40af;
}

.badge-tutorial {
    background: #d1fae5;
    color: #065f46;
}

.badge-opinion {
    background: #fef3c7;
    color: #92400e;
}

/* Hover sutil */
.badge:hover {
    filter: brightness(0.95);
    cursor: default;
}

#Categorías en formatos de tarjeta de blog

Un ejemplo completo de tarjeta de blog con categoría como insignia:

<?php while ( have_posts() ) : the_post(); ?>
    <article class="blog-card">
        <?php if ( has_post_thumbnail() ) : ?>
            <div class="card-image">
                <?php the_post_thumbnail( 'medium_large' ); ?>

                <?php
                $cats = get_the_category();
                if ( ! empty( $cats ) ) :
                    $primary_cat = $cats[0];
                ?>
                    <span class="card-badge badge-<?php echo esc_attr( $primary_cat->slug ); ?>">
                        <?php echo esc_html( $primary_cat->name ); ?>
                    </span>
                <?php endif; ?>
            </div>
        <?php endif; ?>

        <div class="card-content">
            <h2 class="card-title">
                <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
            </h2>

            <div class="card-meta">
                <time datetime="<?php echo get_the_date('c'); ?>">
                    <?php echo get_the_date(); ?>
                </time>

                <?php
                // Mostrar todas las categorias como texto
                $all_cats = get_the_category();
                $cat_names = array_map( function( $cat ) {
                    return esc_html( $cat->name );
                }, $all_cats );
                echo '<span class="categories">' . implode( ' / ', $cat_names ) . '</span>';
                ?>
            </div>

            <p class="card-excerpt"><?php echo wp_trim_words( get_the_excerpt(), 20 ); ?></p>
        </div>
    </article>
<?php endwhile; ?>

#Para taxonomías personalizadas

El mismo principio se aplica a taxonomías personalizadas con get_the_terms():

$genres = get_the_terms( get_the_ID(), 'genre' );

if ( ! empty( $genres ) && ! is_wp_error( $genres ) ) {
    $genre_names = array();
    foreach ( $genres as $genre ) {
        $genre_names[] = esc_html( $genre->name );
    }
    echo implode( ', ', $genre_names );
}

#Función helper reutilizable

Crea una función helper que funcióne con cualquier taxonomía:

/**
 * Obtener nombres de terminos como texto plano
 *
 * @param string $taxonomy Nombre de la taxonomia
 * @param string $separator Separador entre nombres
 * @param int|null $post_id ID de la entrada
 * @return string Lista de nombres separados
 */
function wppoland_get_term_names( $taxonomy = 'category', $separator = ', ', $post_id = null ) {
    $post_id = $post_id ?: get_the_ID();

    if ( $taxonomy === 'category' ) {
        $terms = get_the_category( $post_id );
    } else {
        $terms = get_the_terms( $post_id, $taxonomy );
    }

    if ( empty( $terms ) || is_wp_error( $terms ) ) {
        return '';
    }

    $names = array_map( function( $term ) {
        return esc_html( $term->name );
    }, $terms );

    return implode( $separator, $names );
}

// Uso:
echo wppoland_get_term_names( 'category' );           // "Noticias, WordPress"
echo wppoland_get_term_names( 'post_tag', ' | ' );    // "PHP | CSS | HTML"
echo wppoland_get_term_names( 'genre', ' / ', 123 );  // "Accion / Drama"

#Resumen

get_the_category() es la herramienta correcta cuando necesitas nombres de categoría como texto plano sin enlaces. Los puntos clave son:

  • the_category() siempre genera enlaces HTML, no se puede evitar
  • get_the_category() devuelve objetos con acceso completo a metadatos
  • Siempre escapa la salida con esc_html() por seguridad
  • Usa implode() para listas separadas elegantemente
  • El mismo patron funciona con taxonomías personalizadas via get_the_terms()
  • Crea funciones helper reutilizables para mantener tu código DRY
Siguiente paso

Transforma el artículo en una implementación real

Este bloque refuerza el enlazado interno y lleva al lector al siguiente paso más útil dentro de la arquitectura del sitio.

¿Quieres implementar esto en tu sitio?

Si quieres transformar el artículo en mejoras concretas, rediseño o un plan de implementación, puedo cerrar el alcance y ejecutar.

Cluster relacionado

Explora otros servicios WordPress y base de conocimiento

Refuerza tu negocio con soporte técnico profesional en áreas clave del ecosistema WordPress.

FAQ del artículo

Preguntas Frecuentes

Respuestas prácticas para aplicar el tema en la ejecución real.

SEO-ready GEO-ready AEO-ready 3 Q&A
Por que no usar the_category() si solo necesito texto?
Porque the_category() imprime enlaces HTML listos. Si necesitas texto plano para una insignia, slider o diseño personalizado, get_the_category() te da acceso directo al objeto de categoría.
Como muestro solo el nombre de la primera categoría?
Obtiene el array de categorías con get_the_category(), comprueba que no esta vacio, y luego imprime el nombre del primer elemento con el escapado adecuado.
Como puedo mostrar varios nombres de categoría sin enlaces?
Recorre los objetos de categoría, recoge los nombres en un array y unelos con implode() para controlar el separador y evitar etiquetas anchor.

¿Necesitas un FAQ adaptado a tu sector y mercado? Preparamos una versión alineada con tus objetivos de negocio.

Hablemos

Artículos Relacionados

Guía completa de WordPress Multisite para despliegues enterprise. Aprende patrones de arquitectura, escalabilidad a 1000+ sitios, hardening de seguridad, mapeo de dominios, gestión de usuarios y optimización de costes para redes de franquicias, universidades y organismos gubernamentales.
wordpress

WordPress Multisite para Enterprise: Arquitectura, Escalabilidad y Mejores Prácticas

Guía completa de WordPress Multisite para despliegues enterprise. Aprende patrones de arquitectura, escalabilidad a 1000+ sitios, hardening de seguridad, mapeo de dominios, gestión de usuarios y optimización de costes para redes de franquicias, universidades y organismos gubernamentales.

Migrar tu sitio WordPress puede parecer abrumador, pero con los conocimientos y la preparación adecuados, se convierte en un proceso manejable. Ya sea que estés cambiando de dominio, actualizando el hosting o reestructurando la arquitectura de tu sitio, esta guía completa cubre cada paso.
development

Guía Completa de Migración WordPress: Mueve Tu Sitio de Forma Segura en 2024

Migrar tu sitio WordPress puede parecer abrumador, pero con los conocimientos y la preparación adecuados, se convierte en un proceso manejable. Ya sea que estés cambiando de dominio, actualizando el hosting o reestructurando la arquitectura de tu sitio, esta guía completa cubre cada paso.

Como recuperar y mostrar una lista de posts de una categoría específica en WordPress? Aprende WP_Query, get_posts y loops personalizados. Ejemplos de código y optimización.
wordpress

Extraer listas de posts de categorías en WordPress – Guia del desarrollador

Como recuperar y mostrar una lista de posts de una categoría específica en WordPress? Aprende WP_Query, get_posts y loops personalizados. Ejemplos de código y optimización.