Я новичок в 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, так что я сделал что-то неправильно.
Вот что я прочитал из Codex:
Если вы используете пользовательскую домашнюю страницу с настраиваемыми циклами и т.д., вы будет иметь пустой
wp_title
. Здесь идет аккуратный взлом, чтобы добавить описание /tagline вwp_title
на главной странице:
<title><?php bloginfo('name'); ?> | <?php is_front_page() ? bloginfo('description') : wp_title(''); ?></title>
Поэтому используйте is_front_page()
, чтобы получить заголовок на главной странице, как это предлагается в приведенном выше коде.
Но если вы используете статическую домашнюю страницу, это код:
<title><?php bloginfo('name'); ?> » <?php is_front_page() ? bloginfo('description') : wp_title(''); ?></title>
Обновление для версий WordPress (> = 4.4)
Попробуй это
function some_name(){
add_theme_support( 'title-tag' );
}
add_action( 'after_setup_theme', some_name );
Сделайте это в functions.php и удалите тег title из заголовка...
Отключение ответа Amna, я придумал следующий код, который должен отображать заголовок страницы, когда он есть, а затем имя сайта.
<?php wp_title(' - ',TRUE,'right'); bloginfo('name'); ?>
Вывод сообщений/страниц: "Название страницы - название сайта"
Домашняя страница Выходы: "Имя сайта"
Очевидно, это также можно поменять местами, чтобы сначала отобразить имя сайта.
<?php bloginfo('name'); wp_title(' - '); ?>
Вывод сообщений/страниц: "Название сайта - название страницы"
Домашняя страница Выходы: "Имя сайта"
Это также можно комбинировать с условным отображением описания сайта при просмотре домашней страницы.
<?php bloginfo('name'); echo ' - '; is_front_page() ? bloginfo('description') : wp_title(''); ?>
Вывод сообщений/страниц: "Название сайта - название страницы"
Домашняя страница Выходы: "Название сайта - Описание сайта"
Для поиска 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 );
Новый код из 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;
}
Я использую этот, и он никогда не удался:
function pageTitle($echo){
$title = "";
global $paged;
if (function_exists('is_tag') && is_tag()) {
$title .= single_tag_title(__("Tag Archive for "" , 'circle'),false);
$title .= '" - ';
}
elseif (is_archive()) {
$title .= wp_title('',true);
//$title .= __(' Archive - ' , 'circle');
$title .= __(' - ' , 'circle');
}
elseif (is_search()) {
$title .= __('Search for "' , 'circle') . esc_html(get_search_query()).'" - ';
}
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;
}
Обратите внимание, что в нем есть домены переводов, которые вы можете изменить.
Вы также можете поместить что-то подобное в тег заголовка:
<?php
if (is_front_page()) { ?>
Home | <?php bloginfo('description');
} else {
wp_title('|', 'true', 'right'); bloginfo('description');
} ?>
Мои 2 цента за тему "туманного озера", которая не имела названия на домашней странице и добавила неправильный заголовок на всех других страницах.
Просто удаление следующей строки из header.php решает проблему, так как Wordpress теперь вводит тег сам по себе:
<title><?php wp_title( '|', true, 'right' ); ?></title>
Я обратился к следующей странице - https://make.wordpress.org/themes/2015/08/25/title-tag-support-now-required/
Позднее разговор...
Но если вы хотите использовать фактическое название страницы, которую вы используете для статической первой страницы, вы можете использовать следующее:
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 );
}
Я подозреваю, что для этого есть веская причина. Итак, действуйте осторожно.
Я использую этот метод на моем сайте 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;