Una Otra de las carencias raras-estúpidas-incomprensibles de WordPress para ser una máquina perfecta de SEO es el hecho de que no aprovecha lo que ya tiene para generar las tags meta description para SEO.
Es raro porque, por si no lo sabías, WordPress sí crea automáticamente la etiqueta meta <title> a partir de, adivina, sí, a partir del título de la publicación (entrada, página, incluso el título del sitio), pero sin embargo no aprovecha el resto de lo que ya genera para hacer lo mismo para crear las meta description.
¡Oye!, ¿qué es eso de la meta description?
¡Ah, perdona!
La meta description es ese trozo de texto que Google muestra debajo del título en los resultados de búsqueda o que utiliza para los resúmenes que genera para las vistas creadas con IA. No afecta al posicionamiento directamente pero sí al CTR, que es lo que luego te trae visitas.
Si tienes un plugin SEO como Yoast o Rank Math ya se ocupan ellos, pero si no lo usas, o lo has quitado porque solo necesitas esta función concreta.
WordPress ya tiene los campos para generar una meta description decente, solo hay que aprovechar el dato correcto en cada tipo de página.
En este tutorial te dejo cuatro fragmentos de código, uno por cada caso de uso, los copias al functions.php del tema hijo, los pegas como mu-plugin o metes solo los que te interesen.
Al final del tutorial tienes también el combinado si lo prefieres todo en un archivo.
Qué campos nativos vamos a aprovechar
La idea es no reinventar nada, porque WordPress ya tiene sitios donde guardar descripciones y casi nadie los usa:
- La descripción corta del sitio (Ajustes → Generales) para la portada.
- El extracto de cada entrada y página.
- La descripción de cada categoría, etiqueta o taxonomía personalizada.
- La información biográfica del perfil de cada autor.
Si rellenas estos campos ya tienes las meta description únicas en cada tipo de página sin depender de ningún plugin. Y por supuesto, si no rellenas nada o no saldrá nada o saldrá cualquier cosa.
Un detalle importante, la prioridad
Los cuatro snippets de código enganchan con add_action( 'wp_head', ..., 1 ). La prioridad 1 coloca la etiqueta <meta name="description"> justo debajo del <title>, que es donde la esperan los bots y donde la ponen los plugins SEO serios.
Si dejas la prioridad por defecto (10), la meta aparece muy abajo en el <head>, mezclada con scripts y hojas de estilo. Funcionar, funciona igual, pero queda más limpio arriba.
Añadir automáticamente la meta description de la portada a partir la descripción corta
Lo primero es lo primero. La portada usa la descripción corta que tengas en Ajustes → Generales → Descripción corta.
Pero ojo, si ahí sigue poniendo «Just another WordPress site» o «Otro sitio WordPress«, eso es lo que va a ver Google, así que antes de nada cámbialo.
Este código contempla también el caso de que tengas una página estática como portada y otra página aparte asignada como blog (en Ajustes → Lectura). Para la página del blog usa su propio extracto, y si está vacío, se queda con la descripción corta del sitio.
/* Meta Description automática en portada a partir de la descripción corta */
add_action( 'wp_head', function() {
$description = '';
if ( is_front_page() ) {
// Front page: tagline from Settings → General
$description = get_bloginfo( 'description' );
} elseif ( is_home() ) {
// Blog page assigned to a separate page: excerpt of that page
$blog_page_id = (int) get_option( 'page_for_posts' );
if ( $blog_page_id ) {
$description = get_post_field( 'post_excerpt', $blog_page_id );
}
// Fallback to the tagline if the blog page has no excerpt
if ( empty( $description ) ) {
$description = get_bloginfo( 'description' );
}
} else {
return;
}
$description = trim( wp_strip_all_tags( $description ) );
if ( ! empty( $description ) ) {
echo '<meta name="description" content="' . esc_attr( $description ) . '">' . "\n";
}
}, 1 );
Añadir automáticamente la meta description a entradas y páginas a partir del extracto
Para las entradas y páginas tira del campo de extracto que tienes en la barra lateral del editor (o debajo del contenido en el editor clásico).
Si has escrito uno a mano se usa tal cual, y si lo has dejado en blanco el código corta las primeras líneas del contenido hasta los 155 caracteres, que es lo que suele entrar en el resultado de Google.
Antes de cortar quita lo que no debería aparecer como texto plano, como los bloques de Gutenberg que no son texto (galerías, embeds, vídeos) y los shortcodes, para que no te salga [shortcode loquesea] en medio de la meta description.
El corte se hace en el último espacio antes del límite, así no dejas palabras partidas.
Un consejo que te doy es que si quieres usar el campo de extracto en las páginas (por defecto WordPress no lo muestra en páginas), añadas add_post_type_support( 'page', 'excerpt' ); a tu functions.php.
/* Meta description a partir del extracto de entradas o páginas */
add_action( 'wp_head', function() {
if ( ! is_singular() ) {
return;
}
$post = get_queried_object();
if ( ! $post instanceof WP_Post ) {
return;
}
// First try the manual excerpt
$description = $post->post_excerpt;
// Fallback: trim the content to 155 characters at the last space
if ( empty( $description ) ) {
$content = $post->post_content;
// Remove Gutenberg blocks not meant for excerpts (when available)
if ( function_exists( 'excerpt_remove_blocks' ) ) {
$content = excerpt_remove_blocks( $content );
}
// Remove shortcodes so they don't leak into the description
$content = strip_shortcodes( $content );
// Strip all HTML and normalize whitespace
$content = wp_strip_all_tags( $content );
$content = trim( preg_replace( '/\s+/', ' ', $content ) );
if ( mb_strlen( $content ) > 155 ) {
$cut = mb_substr( $content, 0, 155 );
$last_space = mb_strrpos( $cut, ' ' );
if ( false !== $last_space ) {
$cut = mb_substr( $cut, 0, $last_space );
}
$description = $cut . '...';
} else {
$description = $content;
}
}
$description = trim( wp_strip_all_tags( $description ) );
if ( ! empty( $description ) ) {
echo '<meta name="description" content="' . esc_attr( $description ) . '">' . "\n";
}
}, 1 );
Añadir automáticamente la meta description para categorías, etiquetas y taxonomías personalizadas
Las categorías y etiquetas tienen un campo de descripción que casi nadie rellena y que es oro puro para el SEO. Lo tienes al editar cualquier categoría, en Entradas → Categorías → Editar → Descripción.
Lo mismo para etiquetas y para taxonomías personalizadas que hayas creado con algún plugin o tu tema.
Si rellenas ese campo este código lo usa como meta description del archivo de esa categoría o etiqueta. Si no lo has rellenado no hace nada, para no colar una meta description vacía o repetida.
*/ Añadir automáticamente meta description a taxonomías */
add_action( 'wp_head', function() {
if ( ! ( is_category() || is_tag() || is_tax() ) ) {
return;
}
$description = trim( wp_strip_all_tags( term_description() ) );
if ( ! empty( $description ) ) {
echo '<meta name="description" content="' . esc_attr( $description ) . '">' . "\n";
}
}, 1 );
Añadir automáticamente la meta description para archivos de autor a partir de la biografía
Los archivos de autor son páginas que casi siempre se dejan sin meta description, y eso que tienen un campo clarísimo para rellenarla, el campo de información biográfica del perfil del usuario. Lo encuentras en Usuarios → Tu perfil.
Rellenar esa biografía con los datos reales del autor, experiencia, especialidad, formación, no solo te da una meta description automática.
Esta información también es una señal de E-E-A-T que Google y las IA que rastrean la web valoran cada vez más para saber quién escribe qué.
*/ Añadir automáticamente meta description al archivo de autor usando la bio */
add_action( 'wp_head', function() {
if ( ! is_author() ) {
return;
}
$description = trim( wp_strip_all_tags( get_the_author_meta( 'description' ) ) );
if ( ! empty( $description ) ) {
echo '<meta name="description" content="' . esc_attr( $description ) . '">' . "\n";
}
}, 1 );
Cómo comprobar que funciona
Visita cualquier página de tu sitio con clic derecho → Ver código fuente, y busca meta name="description". Debe aparecer debajo del <title>, con el contenido que toque según el tipo de página que estés viendo.
Si usas un plugin SEO al mismo tiempo, vas a ver dos meta description, una del plugin y otra de estos snippets, y no es buena idea. En ese caso, o quitas el snippet o desactivas la meta description del plugin SEO, no tiene sentido que convivan ambos.
Si lo quieres todo en un solo archivo
Los cuatro fragmentos de código los tienes unificados en un mu-plugin listo para usar. Lo pegas en wp-content/mu-plugins/ (si no existe la carpeta, la creas) y se activa solo.
El código completo y los snippets sueltos que hemos visto antes también los tienes en el repositorio de GitHub por si prefieres copiarlos o descargarlos desde ahí.
Demasiados códigos para mi ¿no hay un plugin para eso?
Como me lo imaginaba, porque no todos somos de códigos, he preparado un plugin exactamente para esto, para aprovechar todo eso que ya tiene WordPress y generar las meta title ydescription sin que tengas que depender de un enorme y lleno de funcionalidades de todo pelaje plugin de SEO mega enorme.
Lo he llamado Native SEO Meta Tags, porque es eso, hacer SEO con las etiquetas meta, pero sin tener ni que pensar, generadas a partir de lo que ya tienes, de tu contenido.
Lo instalas, lo activas y listo, hace todo lo que hemos estado hablando. ¿Que prefieres aún definir manualmente alguna meta title o description?, pues también añade la típica cajita al editor de WordPress para que las personalices, pero es totalmente opcional.
Y ya estaría, con estos cuatro códigos tienes cubiertas las meta description de un sitio WordPress sin necesitar ningún enorme SEO, todo a partir de lo que ya genera WordPress a partir de tus contenidos.
Si luego quieres escalarlo y añadir también automáticamente las etiquetas Open Graph y Twitter Cards, ya es otra historia, pero la base la tienes montada con los campos de toda la vida.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!









