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 junio de 2026
6 min 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 qué 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 patrón 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.

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-readyGEO-readyAEO-ready3 Q&A
Por qué 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 está 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