Pregunta:
Estoy creando un tema hijo y actualmente tiene una sección <head>
muy simple en header.php:
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title><?php wp_title( '|', true, 'right' ); ?></title>
<link href="http://gmpg.org/xfn/11">
<link href="<?php bloginfo( 'pingback_url' ); ?>">
<!--[if lt IE 9]>
<script type="text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/html5shiv.min.js"></script>
<![endif]-->
<?php wp_head(); ?>
</head>
Supongo que wp_head()
es responsable del segundo elemento <title>
(aparece justo allí en el HTML final), pero otras cosas que he leído dicen que esto es imposible.
¿Debería eliminar el <title>
de mi header.php, o debería agregar algo a mis funciones para eliminar el título de wp_head()
(por ejemplo, remove_action('wp_head', 'title'
)?
¿O debería estar haciendo algo completamente diferente?
Respuesta:
Las dos etiquetas de título se pueden explicar como que está usando un tema que está escrito para WordPress4.1 y en realidad está usando 4.1. A partir de 4.1, ya no necesita llamar a wp_title()
en la cabeza, puede hacer uso de la nueva etiqueta de soporte de tema title_tag
que agrega automáticamente la etiqueta wp_title()
en el encabezado
Lo más probable es que el tema principal que está utilizando ya esté haciendo esto. Busque en su functions.php esta línea de código
add_theme_support( 'title-tag' );
Como solución, copie el tema principal header.php
a su tema secundario y simplemente elimine la función wp_title()
del tema secundario header.php
Aquí también hay una gran función a tener en cuenta para la compatibilidad con versiones anteriores y es útil para los desarrolladores de temas principales: ( Tomado del códice )
if ( ! function_exists( '_wp_render_title_tag' ) ) {
function theme_slug_render_title()
{
?>
<title>
<?php wp_title( '|', true, 'right' ); ?>
</title>
<?php
}
add_action( 'wp_head', 'theme_slug_render_title' );
}