Skip to content

Todo para WordPress, el desarrollo web — y mucho más

🔧 Cómo personalizar los encabezados de WordPress: 4 técnicas usando functions.php

🔧 Cómo personalizar los encabezados de WordPress: 4 técnicas usando functions.php

Los encabezados en WordPress son mucho más que texto en la parte superior de una página. Trabajan para usted en cuatro direcciones a la vez: SEO (etiqueta title en los resultados de búsqueda), navegación (pestaña del navegador), diseño (jerarquía visual en la página) y control editorial (lo que escriben los autores). Pero los ajustes predeterminados del panel de administración solo cubren lo básico; para un ajuste fino se requiere código.

El problema se agrava cuando varios autores trabajan en un sitio. Uno escribe encabezados de 120 caracteres y rompe la maquetación. Otro usa palabras que su socio ha prohibido por contrato. Un tercero olvida que el título de la página en los resultados de búsqueda y en el sitio son dos campos distintos. Usted no puede supervisar a todos manualmente.

A continuación, presentamos cuatro técnicas específicas para configurar los encabezados de WordPress mediante functions.php. Cada una resuelve su propia tarea: desde el truncado automático de longitud hasta el bloqueo programático de palabras prohibidas. El código utiliza filtros documentados de WordPress y ha sido probado en WP 6.x. Al final, encontrará una sección de preguntas frecuentes sobre el tema.

💡 Resumen rápido:

  • Limitar automáticamente la longitud del encabezado mediante el filtro the_title para que los autores no puedan romper la maquetación
  • Cambiar la alineación del encabezado de la entrada a través de single.php sin plugins ni ediciones de CSS
  • Bloquear la publicación de entradas con palabras prohibidas mediante el hook transition_post_status
  • Cambiar el separador de la etiqueta title y añadir títulos personalizados mediante campos meta

Cómo limitar la longitud del encabezado en WordPress

Un encabezado largo puede arruinar incluso el diseño más cuidadosamente elaborado. En la página de inicio, donde se muestran extractos, un encabezado de 120 caracteres se desborda de la tarjeta y el diseño se ve roto. Esto afecta especialmente a los sitios con cuadrículas de varias columnas.

La solución es el filtro the_title, que trunca el encabezado a un límite especificado cuando se muestra en la página. El registro real en la base de datos permanece intacto; solo se acorta el texto mostrado.

Código para functions.php:

1function sdstudio_limit_title_length( $title ) {
2 $max = 60;
3 if ( mb_strlen( $title ) > $max ) {
4 return mb_substr( $title, 0, $max ) . ' …';
5 }
6 return $title;
7}
8add_filter( 'the_title', 'sdstudio_limit_title_length' );

Esto es lo que sucede: mb_strlen cuenta los caracteres correctamente para cirílico (a diferencia de strlen, que cuenta bytes). Cuando se supera el límite de 60 caracteres, el encabezado se trunca y se añaden puntos suspensivos al final para que los lectores entiendan que no es el texto completo. Puede sustituir 60 por cualquier otro número para adaptarlo a su maquetación.

¿Dónde aplicarlo de forma selectiva? Si solo necesita truncar encabezados en un lugar específico (por ejemplo, en un widget de entradas populares), envuelva add_filter en una etiqueta condicional:

1if ( is_home() || is_front_page() ) {
2 add_filter( 'the_title', 'sdstudio_limit_title_length' );
3}

El mismo enfoque funciona para is_archive(), is_category() y cualquier otro contexto.

Cómo cambiar la alineación del encabezado de la entrada

Los temas de WordPress varían. Algunos ofrecen opciones de alineación en el personalizador; otros no. Si su tema pertenece a la segunda categoría, el encabezado se alinea a la izquierda por defecto y no encontrará una opción para esto en el panel de administración.

La alineación del encabezado se establece en la plantilla single.php, el archivo responsable de mostrar las entradas individuales. Solo hay cuatro pasos:

Editor de temas de WordPress single.php con código de alineación de encabezados
  • Abra Apariencia → Editor de temas (o el archivo single.php mediante FTP/panel de hosting)
  • Encuentre la línea <?php the_title(); ?>, que muestra el encabezado
  • Envuélvala en una etiqueta con la alineación deseada

Alineación izquierda (predeterminada):

1<?php the_title(); ?>

Centro:

1<div style="text-align: center;"><?php the_title(); ?></div>

Derecha:

1<div style="text-align: right;"><?php the_title(); ?></div>
  • Guarde el archivo y abra cualquier entrada; el encabezado aparecerá en la posición especificada

Este método es básico pero funciona para cualquier tema. Un enfoque más limpio es añadir una clase CSS mediante el filtro body_class y aplicar estilo a través de la hoja de estilos, pero para una solución rápida los estilos en línea son suficientes.

Cómo bloquear palabras no deseadas en los encabezados

Una advertencia textual a los autores («por favor, no use la palabra X en los encabezados») funciona hasta el primer plazo de entrega olvidado. Tarde o temprano alguien publicará un encabezado con una frase prohibida y, en el mejor de los casos, la entrada se verá internamente; en el peor, la verá un socio o competidor.

El bloqueo programático resuelve el problema de forma radical: WordPress simplemente impide publicar la entrada si el encabezado contiene una palabra prohibida. El autor ve un mensaje de error y debe corregir el texto antes de publicar.

Código de functions.php para bloquear palabras prohibidas en los encabezados de WordPress

Código para functions.php:

1function sdstudio_block_forbidden_title_words( $new_status, $old_status, $post ) {
2 if ( 'publish' !== $new_status || 'publish' === $old_status ) {
3 return;
4 }
5
6 $restricted = array( 'word1', 'word2', 'word3' );
7 $title = $post->post_title;
8
9 foreach ( $restricted as $word ) {
10 if ( mb_stripos( $title, $word ) !== false ) {
11 wp_die( 'Ошибка: заголовок содержит запрещённое слово — «' . esc_html( $word ) . '». Измените заголовок и попробуйте снова.' );
12 }
13 }
14}
15add_action( 'transition_post_status', 'sdstudio_block_forbidden_title_words', 10, 3 );

Cómo funciona: el hook transition_post_status se dispara ante cualquier cambio de estado de una publicación. Verificamos que el nuevo estado sea publish y que el estado anterior no sea publish (de lo contrario, cada actualización de una publicación ya publicada también se bloquearía). Luego, mb_stripos busca cada palabra prohibida en el título sin distinguir mayúsculas de minúsculas. Si la encuentra, wp_die detiene la publicación con un mensaje claro.

Para añadir su propia palabra, reemplace palabra1, palabra2, palabra3 en el array $restricted. Puede agregar tantas palabras como necesite; la función las recorrerá todas.

Extra: muestre a los autores la lista de palabras prohibidas justo debajo del campo de título. Añada este código al mismo functions.php:

1function sdstudio_show_restricted_words_notice() {
2 $restricted = array( 'word1', 'word2', 'word3' );
3 echo '<div style="color:#856404;background:#fff3cd;padding:6px 12px;margin:8px 0;border-radius:4px;font-size:13px;">';
4 echo 'Запрещённые слова в заголовке: <strong>' . implode( ', ', $restricted ) . '</strong>';
5 echo '</div>';
6}
7add_action( 'edit_form_after_title', 'sdstudio_show_restricted_words_notice' );

Ahora la lista de palabras prohibidas es visible encima del editor, para que los autores no tengan que adivinar qué está prohibido.

Separador de título y etiquetas de título personalizadas

El separador de título es el símbolo entre el nombre del sitio y el título de la publicación en <title>. En los resultados de búsqueda aparece como «Nombre del sitio | Título de la publicación» o «Nombre del sitio - Título de la publicación». Esto no afecta directamente la tasa de clics, pero distingue visualmente su fragmento del de otros.

Desde WordPress 4.4, el separador se cambia mediante el filtro document_title_separator. El código son solo tres líneas:

1function sdstudio_change_title_separator( $separator ) {
2 return '|';
3}
4add_filter( 'document_title_separator', 'sdstudio_change_title_separator' );

Puede reemplazar el símbolo de la tercera línea por cualquier carácter: barra vertical, guion, signo mayor que, punto medio. No use caracteres especiales como ★ o →; Google no los muestra y su fragmento en los resultados de búsqueda se verá descuidado.

Para versiones anteriores a WordPress 4.4: la función wp_title está obsoleta, pero si su sitio aún está en una versión anterior, actualice primero (esto es un asunto de seguridad) y luego ajuste el separador. El código antiguo que usa wp_title permanece en la documentación de WordPress como referencia histórica, pero no se recomienda.

Cómo establecer una etiqueta de título personalizada para una publicación individual

Hay situaciones en las que la etiqueta de título para las SERP debe diferir del H1 en la página. Los plugins SEO (Yoast, Rank Math) proporcionan un campo separado para esto. Pero si no usa un plugin SEO, la tarea se resuelve con un campo personalizado y el filtro pre_get_document_title.

Código para functions.php:

1function sdstudio_custom_title_from_meta( $title ) {
2 if ( is_singular() ) {
3 $custom = get_post_meta( get_the_ID(), 'custom_post_title', true );
4 if ( $custom ) {
5 return esc_html( $custom );
6 }
7 }
8 return $title;
9}
10add_filter( 'pre_get_document_title', 'sdstudio_custom_title_from_meta', 20 );

Cómo usarlo:

  • Abra la publicación que necesita un <title> personalizado
  • En el bloque «Campos personalizados» (si no lo ve, actívelo en «Opciones de pantalla») cree un campo llamado custom_post_title
  • Ingrese la etiqueta de título deseada como valor, por ejemplo, «Reseña de plugin de caché 2026, comparativa y pruebas»
  • Guarde la publicación

Si el campo personalizado no se completa, WordPress usa la etiqueta de título estándar (título de la publicación + separador + nombre del sitio). El mecanismo solo funciona para páginas singulares (is_singular); los títulos en archivos y en el área de administración no se ven afectados.

Nota importante: pre_get_document_title tiene prioridad 20, lo que asegura que el filtro se ejecute DESPUÉS de la formación estándar del título y la sobrescriba.

Vea el video de 6 minutos sobre el tema; muestra el proceso visual de configuración de etiquetas de título a través del administrador de WordPress y plugins SEO.

⁉️🤔 Preguntas frecuentes

¿El código de este artículo funciona en WordPress 6.x (la versión actual en wordpress.org)?

Sí, todo el código ha sido probado en la versión actual de WordPress. Los filtros the_title, document_title_separator y pre_get_document_title forman parte del núcleo de WordPress desde las versiones 4.4-5.0 y son totalmente compatibles con WP 6.x. El único cambio respecto a guías anteriores: el hook obsoleto publish_post se ha reemplazado por transition_post_status.

¿Debo editar el archivo functions.php del tema hijo o puedo usar el principal?

Edite siempre el tema hijo. Si edita el functions.php del tema principal, todos los cambios se perderán en la próxima actualización. Si no tiene un tema hijo, cree uno: lleva cinco minutos mediante el plugin Child Theme Configurator o manualmente (un archivo style.css + un archivo functions.php con la directiva Template:).

¿Puedo lograr el mismo resultado con plugins en lugar de código?

Parcialmente. Para títulos SEO existen Yoast SEO y Rank Math. Para limitar la longitud, hay plugins como Title Length Limiter, pero su soporte no es fiable. Para bloquear palabras y cambiar el separador, no hay plugins estándar; solo funciona el código. Además, cada plugin adicional ralentiza el sitio, mientras que cuatro líneas en functions.php no añaden una carga perceptible.

¿Qué debo hacer si el sitio muestra una pantalla en blanco después de editar functions.php?

Conéctese al servidor por FTP o a través del gestor de archivos de su hosting, abra functions.php y elimine el código que añadió. Si no tiene acceso FTP, vaya a phpMyAdmin, busque la tabla wp_options, la fila active_plugins y desactive temporalmente todos los plugins (esto limpiará la caché). Para el futuro: antes de cualquier edición en functions.php, active WP_DEBUG en wp-config.php; así, en lugar de una pantalla en blanco verá el texto del error.

¿El separador del título afecta al SEO?

> No hay un efecto directo en los rankings; Google no evalúa si usted usa | o -. Existe un efecto indirecto: Google puede no mostrar separadores no estándar (, ) y su fragmento en los resultados de búsqueda se verá peor visualmente. Además, un separador reconocible construye reconocimiento de marca: los usuarios se acostumbran al formato «Marca | Título» y notan sus resultados en la SERP más rápido.

Qué implementar y en qué orden

Las cuatro técnicas anteriores cubren todos los escenarios principales para trabajar con encabezados de WordPress. El orden de implementación va de lo simple a lo complejo:

Primero, cambie el separador de la etiqueta title; son tres líneas de código con resultados instantáneos en los resultados de búsqueda. Luego configure etiquetas <title> personalizadas mediante campos meta si su sitio tiene páginas clave que necesitan títulos separados para la SERP. Después, implemente el filtro de longitud; protegerá el diseño de encabezados excesivamente largos sin ninguna acción por parte de los autores. Finalmente, añada el bloqueador de palabras prohibidas una vez que la lista de frases vetadas haya sido consensuada y aprobada.

Antes de cualquier edición en functions.php, haga una copia de seguridad del archivo: copie su contenido a un editor de texto y guárdelo localmente. Esto lleva diez segundos y ahorrará horas de recuperación en caso de error.