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

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

Ú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 múltiples 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 (útil 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 múltiples 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 términos 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 vía 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.

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

Migración WordPress: hosting, dominio, base de datos y redirecciones

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 – Guía 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.