Два тега title в заголовке WordPress

22 мар. 2015 г., 19:53:27
Просмотры: 14.7K
Голосов: 7

Я создаю дочернюю тему, и в настоящее время в header.php у меня очень простой раздел <head>:

<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>

Я предполагаю, что wp_head() отвечает за второй тег <title> (он появляется прямо там в итоговом HTML), но другие источники утверждают, что это невозможно.

Должен ли я удалить тег <title> из своего header.php, или мне нужно добавить что-то в functions.php, чтобы удалить title из wp_head() (например, remove_action('wp_head', 'title')?

Или мне нужно сделать что-то совсем другое?

7
Комментарии

Я только что заметил, что эта проблема также присутствует в оригинальной (родительской) теме. Хм!

Django Reinhardt Django Reinhardt
22 мар. 2015 г. 20:06:18

Вы используете WordPress 4.1 и тему, написанную для 4.1? Если да, то у вас должна быть где-то в functions.php строка add_theme_support( 'title-tag' );. Это объясняет наличие двух title-тегов. Данная функция была введена в 4.1 и автоматически добавляет тег wp_title() в заголовок. Если это так, просто скопируйте header.php из родительской темы в дочернюю тему и удалите тег wp_title() в header.php

Pieter Goosen Pieter Goosen
22 мар. 2015 г. 20:19:24

Рад был помочь, хорошо, что сработало. Удачи

Pieter Goosen Pieter Goosen
22 мар. 2015 г. 20:39:22

@PieterGoosen Думаю, твой комментарий стоит оформить как ответ ;-)

birgire birgire
22 мар. 2015 г. 22:02:24

@birgire сделано, спасибо за предложение. Немного расширил :-)

Pieter Goosen Pieter Goosen
23 мар. 2015 г. 06:27:20

Отлично, уверен это будет полезно, так как это кажется распространённой проблемой. @PieterGoosen

birgire birgire
23 мар. 2015 г. 10:49:38

@birgire Похоже, что так :-). Надеюсь, это окажется полезным для всех в ближайшем будущем.

Pieter Goosen Pieter Goosen
23 мар. 2015 г. 11:00:04
Показать остальные 2 комментариев
Все ответы на вопрос 2
0
10

Два тега title могут появиться из-за того, что вы используете тему, написанную для WordPress 4.1, но работаете на версии 4.1 или выше. Начиная с версии 4.1, вам не нужно вызывать wp_title() в секции head, вместо этого можно использовать новую функцию поддержки темы title_tag, которая автоматически добавляет тег wp_title() в заголовок.

Родительская тема, которую вы используете, скорее всего, уже делает это. Проверьте файл functions.php на наличие следующей строки кода:

add_theme_support( 'title-tag' );

В качестве решения скопируйте файл header.php из родительской темы в вашу дочернюю тему и просто удалите функцию wp_title() из header.php дочерней темы.

Также стоит помнить о полезной функции для обратной совместимости, которая пригодится разработчикам родительских тем: (Взято из 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 мар. 2015 г. 06:26:40
1
-3

В файле function.php вашей темы закомментируйте код

//add_theme_support( 'title-tag' );
3 февр. 2016 г. 11:50:55
Комментарии

Это совершенно неверно и никогда не сработает

Pieter Goosen Pieter Goosen
3 февр. 2016 г. 12:01:17