Пустой WordPress wp_title на странице индекса

36

Я новичок в WordPress и только что установил версию 3.3.1.

Я сделал несколько поисков по этому вопросу и нашел ответы, но они были релевантны версии 2.7 и были 2-3 годами.

В принципе, функция wp_title отлично работает на каждой странице, кроме моей домашней страницы, где она возвращается пустым, и я не получаю никакого названия вообще. Я мог бы просто скопировать заголовок, но я бы предпочел не делать этого.

Виновная строка кода:

<title><?php wp_title ( '| So Fresh n\' So Clean', true,'right' ); ?></title>

Я не мог найти ничего относительно этой проблемы, происходящей в 3.3.1, так что я сделал что-то неправильно.

Теги:
title

11 ответов

95
Лучший ответ

Вот что я прочитал из Codex:

Если вы используете пользовательскую домашнюю страницу с настраиваемыми циклами и т.д., вы будет иметь пустой wp_title. Здесь идет аккуратный взлом, чтобы добавить описание /tagline в wp_title на главной странице:

<title><?php bloginfo('name'); ?> | <?php is_front_page() ? bloginfo('description') : wp_title(''); ?></title>

Поэтому используйте is_front_page(), чтобы получить заголовок на главной странице, как это предлагается в приведенном выше коде.

  • 8
    предпочитаю использовать is_front_page вместо is_home
  • 1
    is_front_page предпочтительнее, так как он будет более универсальным
Показать ещё 2 комментария
13

Но если вы используете статическую домашнюю страницу, это код:

<title><?php bloginfo('name'); ?> &raquo; <?php is_front_page() ? bloginfo('description') : wp_title(''); ?></title>
  • 0
    Должно также работать на страницах блога
8

Обновление для версий WordPress (> = 4.4)

Попробуй это

function some_name(){
    add_theme_support( 'title-tag' );
}

add_action( 'after_setup_theme', some_name );

Сделайте это в functions.php и удалите тег title из заголовка...

  • 2
    Похоже, что это более правильный ответ для более новых версий WP. Я удалил тег <title> из шаблона, и тег title появился на главной странице.
  • 1
    Это было заявлено как устаревшее в 4.4. Тем не менее, это было "Un-deprecate", core.trac.wordpress.org/changeset/35624
7

Отключение ответа Amna, я придумал следующий код, который должен отображать заголовок страницы, когда он есть, а затем имя сайта.

<?php wp_title(' - ',TRUE,'right'); bloginfo('name'); ?>

Вывод сообщений/страниц: "Название страницы - название сайта"

Домашняя страница Выходы: "Имя сайта"


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

<?php bloginfo('name'); wp_title(' - '); ?>

Вывод сообщений/страниц: "Название сайта - название страницы"

Домашняя страница Выходы: "Имя сайта"


Это также можно комбинировать с условным отображением описания сайта при просмотре домашней страницы.

<?php bloginfo('name'); echo ' - '; is_front_page() ? bloginfo('description') : wp_title(''); ?>

Вывод сообщений/страниц: "Название сайта - название страницы"

Домашняя страница Выходы: "Название сайта - Описание сайта"

3

Для поиска google на wordpress wp_title empty это первый результат. Поэтому я подумал, что могу поделиться самым элегантным решением для этого. В функции .php добавьте фильтр для wp_title.

function custom_wp_title( $title, $sep ) {
    if ( is_feed() ) {
        return $title;
    }

    global $page, $paged;

    // Add the blog name
    $title .= get_bloginfo( 'name', 'display' );

    // Add the blog description for the home/front page.
    $site_description = get_bloginfo( 'description', 'display' );
    if ( $site_description && ( is_home() || is_front_page() ) ) {
        $title .= " $sep $site_description";
    }

    // Add a page number if necessary:
    if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) {
        $title .= " $sep " . sprintf( __( 'Page %s', '_s' ), max( $paged, $page ) );
    }

    return $title;
}
add_filter( 'wp_title', 'custom_wp_title', 10, 2 );
1

Новый код из Codex выглядит следующим образом:

<title><?php wp_title(''); ?></title>

Затем в вашем файле "functions.php" из файла темы:

add_filter( 'wp_title', 'baw_hack_wp_title_for_home' );
function baw_hack_wp_title_for_home( $title )
{
  if( empty( $title ) && ( is_home() || is_front_page() ) ) {
    return __( 'Home', 'theme_domain' ) . ' | ' . get_bloginfo( 'description' );
  }
  return $title;
}
1

Я использую этот, и он никогда не удался:

    function pageTitle($echo){
        $title = "";

        global $paged;
        if (function_exists('is_tag') && is_tag()) {        
            $title .= single_tag_title(__("Tag Archive for &quot;" , 'circle'),false); 
            $title .= '&quot; - '; 
        }
        elseif (is_archive()) {
            $title .= wp_title('',true); 
            //$title .= __(' Archive - ' , 'circle');
            $title .= __(' - ' , 'circle');

        }
        elseif (is_search()) {
        $title .= __('Search for &quot;' , 'circle') . esc_html(get_search_query()).'&quot; - '; 
        }
        elseif (!(is_404()) && (is_single()) || (is_page())) {
            $title .= wp_title('',true); 
            $title .= ' - '; 
        }
        elseif (is_404()) {
            $title .= __('Not Found - ' , 'circle'); 
        }
        if (is_home()) {
            $title .= get_bloginfo('name'); 
            $title .= ' - '; 
            $title .= get_bloginfo('description'); 
        }
        else {
            $title .= get_bloginfo('name'); 
        }
        if ($paged>1) {
            $title .= ' - page ' . $paged; 
        }

        if ( !$echo ) return $title;
        echo $title;
    }

Обратите внимание, что в нем есть домены переводов, которые вы можете изменить.

  • 0
    Очевидно, что это более подходящий и полезный код для дочерних тем, чем принятые ответы. Просто поместите его в functions.php вашей дочерней темы.
0

Вы также можете поместить что-то подобное в тег заголовка:

<?php 
    if (is_front_page()) { ?> 
        Home | <?php bloginfo('description'); 
    } else {
        wp_title('|', 'true', 'right'); bloginfo('description');
    } ?>
0

Мои 2 цента за тему "туманного озера", которая не имела названия на домашней странице и добавила неправильный заголовок на всех других страницах.

Просто удаление следующей строки из header.php решает проблему, так как Wordpress теперь вводит тег сам по себе:

<title><?php wp_title( '|', true, 'right' ); ?></title>

Я обратился к следующей странице - https://make.wordpress.org/themes/2015/08/25/title-tag-support-now-required/

0

Позднее разговор...

Но если вы хотите использовать фактическое название страницы, которую вы используете для статической первой страницы, вы можете использовать следующее:

if (is_front_page())
{
    $title = single_post_title( '', false );
}

Хотя в фактическом источнике для wp_title() существует следующее, специфически отключая это для статической главной страницы:

if ( is_single() || ( is_home() && ! is_front_page() ) || ( is_page() && ! is_front_page() ) ) {
    $title = single_post_title( '', false );
}

Я подозреваю, что для этого есть веская причина. Итак, действуйте осторожно.

0

Я использую этот метод на моем сайте WordPress.

//Meta Header
if ( ! function_exists( 'dima_wp_title' ) ) :
  function dima_wp_title( $title ) {

    if ( is_front_page() ) {
      return get_bloginfo( 'name' ) . ' | ' . get_bloginfo( 'description' );
    } elseif ( is_feed() ) {
      return ' | RSS Feed';
    } else {
      return trim( $title ) . ' | ' . get_bloginfo( 'name' ); 
    }

  }
  add_filter( 'wp_title', 'dima_wp_title' );
endif;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню