Temas con soporte para title-tag. Cómo y por qué WordPress
El título de las páginas HTML (la etiqueta <title>
) ha sido por mucho tiempo un elemento que los temas para WordPress tenían que introducir de forma manual. Por ejemplo, el header.php de un tema típico podía tener esta pinta:
<!DOCTYPE html>
<html <?php language_attributes();?>>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<title><?php wp_title( '|', true, 'right' ); ?></title>
<?php wp_head(); ?>
</head>
Luego, era casi universal que el propio tema utilizase el filtro wp_title para modificar el título y añadir cosas como el nombre del sitio o el número de página en listados paginados. Con esta práctica era frecuente que se produciesen duplicidades al trabajar con plugins que modificaban el elemento <title>
, generalmente plugins dirigidos al SEO, y que no tenían forma de saber si el tema u otro plugin generaba o no el elemento <title>
por su cuenta.
Y llegó title-tag
En WordPress 4.1 se introdujo la característica title-tag
para temas. Si un tema soporta esta característica, tiene que declararlo en el evento after_setup_theme
o init
, nunca después. Por ejemplo:
add_action( 'after_setup_theme', 'mitema_setup' );
function mitema_setup() {
add_theme_support( 'title-tag' );
}
Al declarar que el tema soporta title-tag
, se dice a WordPress que el tema no genera el elemento <title>
y que deja a WordPress hacer el trabajo. El header.php ya no debe incluir <title>
y quedaría algo así:
<!DOCTYPE html>
<html <?php language_attributes();?>>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<?php wp_head(); ?>
</head>
Por supuesto, puedes seguir utilizando el filtro wp_title
si quieres modificar el título. Y si quieres que el tema sea compatible con versiones anteriores a WP 4.1 puedes utilizar este código:
if ( ! function_exists( '_wp_render_title_tag' ) ) {
add_action( 'wp_head', function() {
?>
<title><?php wp_title( '|', true, 'right' ); ?></title>
<?php
} );
}
La idea de sacar el elemento <title>
de los temas tiene como objetivo implementar una forma estandarizada de trabajar con este elemento tan importante para un documento HTML. Por ejemplo, se planea implementar la configuración y personalización de los títulos desde la administración de WordPress cuándo el tema instalado soporta title-tag
.
Referencias
- Obenland, K.. (29 de Octubre de 2014). Title Tags in 4.1. Make WordPress Core.
- Core trac #18548