Dos etiquetas title en mi cabecera

22 mar 2015, 19:53:27
Vistas: 14.7K
Votos: 7

Estoy construyendo un child theme 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 rel="profile" href="http://gmpg.org/xfn/11">
  <link rel="pingback" 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 ahí 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 hacer algo completamente diferente?

7
Comentarios

Acabo de notar que este problema también ocurre en el tema original (padre). ¡Vaya!

Django Reinhardt Django Reinhardt
22 mar 2015 20:06:18

¿Estás usando WordPress 4.1 y un tema que está escrito para 4.1? Si es así, entonces deberías tener esta línea en algún lugar de functions.php, add_theme_support( 'title-tag' );. Esto debería explicar los dos títulos. Esta característica se introdujo en 4.1 y automáticamente añade la etiqueta wp_title() en el encabezado. Si es así, simplemente copia el header.php de tu tema padre a tu tema hijo y elimina la etiqueta wp_title() en el header.php

Pieter Goosen Pieter Goosen
22 mar 2015 20:19:24

Un placer, me alegro de que funcionara. Disfruta

Pieter Goosen Pieter Goosen
22 mar 2015 20:39:22

@PieterGoosen Creo que tu comentario debería convertirse en una respuesta ;-)

birgire birgire
22 mar 2015 22:02:24

@birgire hecho, gracias por la sugerencia. También lo he ampliado un poco :-)

Pieter Goosen Pieter Goosen
23 mar 2015 06:27:20

genial, estoy seguro de que será útil ya que parece ser un problema común. @PieterGoosen

birgire birgire
23 mar 2015 10:49:38

@birgire así parece :-). Espero que a todos les resulte útil en un futuro cercano.

Pieter Goosen Pieter Goosen
23 mar 2015 11:00:04
Mostrar los 2 comentarios restantes
Todas las respuestas a la pregunta 2
0
10

Las dos etiquetas de título pueden explicarse como que estás usando un tema que está escrito para WordPress 4.1 y actualmente estás usando la versión 4.1. A partir de la versión 4.1, ya no necesitas llamar a wp_title() en el encabezado, puedes hacer uso de la nueva etiqueta de soporte de tema title_tag que automáticamente añade la etiqueta wp_title() en el encabezado.

El tema padre que estás usando probablemente ya está haciendo esto. Busca en tu archivo functions.php esta línea de código:

add_theme_support( 'title-tag' );

Como solución, copia el archivo header.php del tema padre a tu tema hijo y simplemente elimina la función wp_title() del archivo header.php del tema hijo.

Aquí también hay una gran función para tener en cuenta para la compatibilidad con versiones anteriores y es útil para desarrolladores de temas padres: (Tomado del codex)

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' );
}
23 mar 2015 06:26:40
1
-3

En el archivo function.php de tu tema comenta el código

//add_theme_support( 'title-tag' );
3 feb 2016 11:50:55
Comentarios

Esto es completamente incorrecto y nunca funcionará

Pieter Goosen Pieter Goosen
3 feb 2016 12:01:17