WordPress wp_head () заголовок тега не работает - PullRequest
0 голосов
/ 08 ноября 2018

Проблема в том, что на моем одностраничном веб-сайте тег заголовка не заполняется.

page.php выглядит так:

<?php 

locate_template( 'page-home.php', true );

exit();

page-home.php выглядит так:

<?php get_header(); ?>

<?php get_template_part('template-sections/slider'); ?>

<?php get_template_part('template-sections/services'); ?>

<?php //etc. ?>

<?php get_footer();

header.php выглядит так:

<!doctype html>
<html <?php language_attributes(); ?>>
<head>
    <meta charset="<?php bloginfo( 'charset' ); ?>"/>
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
    <link rel="profile" href="http://gmpg.org/xfn/11"/>
    <base href="<?php echo get_site_url(); ?>/">
    <?php wp_head(); ?>
</head>

<body itemprop="hasPart" itemscope="" itemtype="http://schema.org/WebPage" <?php body_class(); ?>>
<!-- etc -->

И footer.php выглядит так:

            <?php wp_footer(); ?>
    </main>
    <aside class="aside">
        <div class="aside__content">
        </div>
    </aside>
</div>
</body>
</html>

Да. На сервере есть страница с именем home. И я бы хотел, чтобы Wordpress поднял этот заголовок и использовал его в качестве тега заголовка в header.php.

Теперь, насколько мне известно, Wordpress обычно автоматически заполняет тег заголовка. Так в чем здесь проблема? Спасибо!

PS: я не использую фильтр wp_title в моей пользовательской теме Wordpress.

1 Ответ

0 голосов
/ 08 ноября 2018

Хорошо, решение , которое я нашел , может помочь другим. Поэтому я не стесняюсь размещать это здесь.

Часть 1. Сравнение со стандартной темой twentyseventeen. Я обнаружил, что Wordpress нужно add_theme_support( 'title-tag' );, чтобы иметь возможность управлять заголовком. (В противном случае вам просто нужно добавить тег <title> в header.php, я думаю.

Часть 2. Мне нужно было добавить пользовательский фильтр к functions.php, чтобы отобразить заголовок в нужном формате. Например (с помощью плагина SEO):

function custom_title( $title_parts ) {
    $page_id   = site_get_page_id(); // custom function, you might want to use global $post here
    $seo_title = @get_post_meta( $page_id, '_aioseop_title' );

    if ( isset( $seo_title[0] ) ) {
        $title = $seo_title[0];
    } elseif ( isset( $page_id ) ) {
        $title = get_the_title( $page_id );
    }

    $page_title           = isset( $title ) ? $title : 'Page not found in backend';
    $title_parts['title'] = $page_title;

    return $title_parts;
}
...