Удалить название сайта из тега <title>
Сейчас мои теги <title>
выглядят так:
Название записи блога | Название сайта
Как мне удалить "Название сайта", чтобы теги <title>
выглядели так:
Название записи блога
За исключением, конечно, главной страницы, где тег <title>
должен быть:
Название сайта
Учтите, что я полный новичок в WordPress.
Редактирование: Вот мой текущий тег <title>
из header.php
:
<title>
<?php
if ( defined( 'WPSEO_VERSION' ) ) {
// WordPress SEO активирован
wp_title();
} else {
// WordPress SEO не активирован
wp_title( '|', true, 'right' );
}
?>
</title>

Лучшее (и самое простое) решение — использовать фильтр wp_title
.
Сначала приведите в порядок вызов <?php wp_title(); ?>
в вашем шаблоне. Замените текущий код на следующий:
wp_title( '|', true, 'right' );
Затем в файле functions.php
(или в functions.php
дочерней темы — с учётом стандартных предостережений) добавьте следующий код:
function wpse95147_filter_wp_title( $title ) {
if ( is_single() || ( is_home() && !is_front_page() ) || ( is_page() && !is_front_page() ) ) {
$title = single_post_title( '', false );
}
return $title;
}
add_filter( 'wp_title', 'wpse95147_filter_wp_title' );
Этот фильтр полностью перезапишет вывод $title
в контексте отдельных страниц. (Условная конструкция взята напрямую из ядра WordPress, из определения самой функции wp_title()
.)
Насколько я знаю, WordPress не выводит название сайта в функции wp_title()
; если вы видите его, значит, он добавляется чем-то другим (возможно, вашей темой?). Тем не менее, если вы хотите выводить его, просто добавьте дополнительное условие в фильтр, например:
function wpse95147_filter_wp_title( $title ) {
if ( is_single() || ( is_home() && !is_front_page() ) || ( is_page() && !is_front_page() ) ) {
$title = single_post_title( '', false );
}
if ( is_front_page() && ! is_page() ) {
$title = esc_attr( get_bloginfo( 'name' ) );
}
return $title;
}
add_filter( 'wp_title', 'wpse95147_filter_wp_title' );

Моя родительская тема добавляла название блога к заголовку. Я смог использовать это решение, чтобы исправить это, просто увеличив параметр priority в вызове add_filter. Это гарантирует, что наш новый фильтр выполнится после фильтра родительской темы. Я установил приоритет на 100: add_filter('wp_title', 'wpse95147_filter_wp_title', 100);

Добавьте эту строку в ваш файл header.php
<title><?php wp_title();?></title>
Добавьте следующий код в файл functions.php вашей темы
function your_wp_title( $title, $sep ) {
global $paged, $page;
if(is_front_page()){
$title = get_bloginfo( 'name' );
return $title;
} else {
if ( is_feed() )
// Добавляем название сайта
return $title;
}
}
add_filter( 'wp_title', 'your_wp_title', 10, 2 );
Ссылка для справки:http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_title

В моем файле шаблона header.php я заменил строку с title на эту:
<title><?php is_front_page() ? woo_title() : wp_title( '' ); ?></title>
В моем случае я использую шаблон от woothemes, поэтому используется вывод woo_title().
Здесь в одной строке проверяется, находимся ли мы на главной странице. Если true - выводится название блога/сайта, если false - выводится только заголовок записи или страницы без названия сайта.

У меня была такая проблема с записями, поэтому я поискал в интернете и создал небольшой плагин, который убирает название блога из записей.
########### начало удаления названия блога из записей #######
function wp_abdul0201_wp_title( $title ) {
if ( is_single() ) {
$title = single_post_title( '', false );
}
return $title;
}
add_filter( 'pre_get_document_title', 'wp_abdul0201_wp_title' );
########### конец удаления названия блога из записей #######
Обратите внимание на этот код:
if ( is_single() )
Он применяется только к заголовкам записей. Вы можете добавить больше условий, например:
if ( is_single() || is_archive )
Здесь я добавил также и архивные страницы. Надеюсь, вы поняли общую идею, как это работает.

<?php wp_title(false); ?>
Попробуйте это, а также узнайте больше здесь
|
обозначает вертикальную черту в качестве разделителя. Аргумент true означает $display - выводить заголовок или нет. Третий аргумент определяет позицию разделителя.
