в части страницы.

wp_title() │ WP 1.0.0

Функция считается устаревшей с версии 4.4. Вместо неё следует использовать поддержку темы ‘title-tag’:

/* * Let WordPress manage the document title. * By adding theme support, we declare that this theme does not use a * hard-coded tag in the document head, and expect WordPress to * provide it for us. */ add_theme_support( 'title-tag' );

В функции можно указать разделитель между названием страницы и дополнительными словами в заголовке. С версии 2.5, можно указать, с какой стороны заголовка разделитель должен находиться (справа, слева). Этот Тег шаблона можно использовать повсеместно, как за пределами Цикла WordPress, так и внутри него. Обычно его используют для указания заголовка страницы в теге

Хуки из функции

Возвращает

Использование

$sep(строка) Текст, который будет показан до или после заголовка (разделитель). По умолчанию сепаратором будет символ: » .
По умолчанию: » (») $echo(логический) Выводить (true) или возвращать заголовок в переменную (false). По умолчанию заголовок выводится на экран.
По умолчанию: true $seplocation(строка) Определяет расположение разделителя. Введено в версии 2.5. Если указать right , то разделитель будет расположен справа от заголовка, во всех остальных случаях слева.
По умолчанию: »

Примеры

#1 Выведем заголовок блога

Выведем название блога (используя bloginfo()) и заголовок страницы (предположим, что мы находимся на странице поста).

Читайте также:  Для чего нужен pass в python

#2 Если нужно убрать разделитель, то вызываем функцию так:

#3 Поменяем местами заголовки

#4 Отдельный заголовок для главной страницы

Если для главной страницы мы используем произвольный шаблон, с произвольный выводом (Циклом WordPress), то заголовок страницы может определяться не так как нам бы хотелось. Чтобы избежать этого используйте такой код:

#5 Использование разделителей

Заметки

Список изменений

Код wp_title() wp title WP 6.2.2

function wp_title( $sep = '»', $display = true, $seplocation = '' ) < global $wp_locale; $m = get_query_var( 'm' ); $year = get_query_var( 'year' ); $monthnum = get_query_var( 'monthnum' ); $day = get_query_var( 'day' ); $search = get_query_var( 's' ); $title = ''; $t_sep = '%WP_TITLE_SEP%'; // Temporary separator, for accurate flipping, if necessary. // If there is a post. if ( is_single() || ( is_home() && ! is_front_page() ) || ( is_page() && ! is_front_page() ) ) < $title = single_post_title( '', false ); >// If there's a post type archive. if ( is_post_type_archive() ) < $post_type = get_query_var( 'post_type' ); if ( is_array( $post_type ) ) < $post_type = reset( $post_type ); >$post_type_object = get_post_type_object( $post_type ); if ( ! $post_type_object->has_archive ) < $title = post_type_archive_title( '', false ); >> // If there's a category or tag. if ( is_category() || is_tag() ) < $title = single_term_title( '', false ); >// If there's a taxonomy. if ( is_tax() ) < $term = get_queried_object(); if ( $term ) < $tax = get_taxonomy( $term->taxonomy ); $title = single_term_title( $tax->labels->name . $t_sep, false ); > > // If there's an author. if ( is_author() && ! is_post_type_archive() ) < $author = get_queried_object(); if ( $author ) < $title = $author->display_name; > > // Post type archives with has_archive should override terms. if ( is_post_type_archive() && $post_type_object->has_archive ) < $title = post_type_archive_title( '', false ); >// If there's a month. if ( is_archive() && ! empty( $m ) ) < $my_year = substr( $m, 0, 4 ); $my_month = substr( $m, 4, 2 ); $my_day = (int) substr( $m, 6, 2 ); $title = $my_year . ( $my_month ? $t_sep . $wp_locale->get_month( $my_month ) : '' ) . ( $my_day ? $t_sep . $my_day : '' ); > // If there's a year. if ( is_archive() && ! empty( $year ) ) < $title = $year; if ( ! empty( $monthnum ) ) < $title .= $t_sep . $wp_locale->get_month( $monthnum ); > if ( ! empty( $day ) ) < $title .= $t_sep . zeroise( $day, 2 ); >> // If it's a search. if ( is_search() ) < /* translators: 1: Separator, 2: Search query. */ $title = sprintf( __( 'Search Results %1$s %2$s' ), $t_sep, strip_tags( $search ) ); >// If it's a 404 page. if ( is_404() ) < $title = __( 'Page not found' ); >$prefix = ''; if ( ! empty( $title ) ) < $prefix = " $sep "; >/** * Filters the parts of the page title. * * @since 4.0.0 * * @param string[] $title_array Array of parts of the page title. */ $title_array = apply_filters( 'wp_title_parts', explode( $t_sep, $title ) ); // Determines position of the separator and direction of the breadcrumb. if ( 'right' === $seplocation ) < // Separator on right, so reverse the order. $title_array = array_reverse( $title_array ); $title = implode( " $sep ", $title_array ) . $prefix; >else < $title = $prefix . implode( " $sep ", $title_array ); >/** * Filters the text of the page title. * * @since 2.0.0 * * @param string $title Page title. * @param string $sep Title separator. * @param string $seplocation Location of the separator ('left' or 'right'). */ $title = apply_filters( 'wp_title', $title, $sep, $seplocation ); // Send it out. if ( $display ) < echo $title; >else < return $title; >>

Cвязанные функции

Другие функции темы

  • add_theme_support()
  • bloginfo()
  • body_class()
  • current_theme_supports()
  • get_custom_header_markup()
  • get_custom_logo()
  • get_header_image()
  • get_header_image_tag()
  • get_header_textcolor()
  • get_header_video_url()
  • get_page_template()
  • get_page_templates()
  • get_post_class()
  • get_query_template()
  • get_stylesheet()
  • get_template()
  • get_theme_mod()
  • get_theme_mods()
  • get_theme_root()
  • has_custom_logo()
  • has_header_image()
  • has_header_video()
  • header_image()
  • is_child_theme()
  • is_header_video_active()
  • post_class()
  • register_nav_menu()
  • register_nav_menus()
  • register_theme_directory()
  • remove_theme_mod()
  • remove_theme_mods()
  • remove_theme_support()
  • search_theme_directories()
  • set_theme_mod()
  • single_month_title()
  • the_custom_header_markup()
  • the_custom_logo()
  • the_header_video_url()
  • the_search_query()
  • unregister_nav_menu()
  • wp_body_open()
  • wp_custom_css_cb()
  • wp_footer()
  • wp_get_archives()
  • wp_get_document_title()
  • wp_get_theme()
  • wp_get_themes()
  • wp_head()
  • wp_is_mobile()
  • wp_nav_menu()
  • wp_robots()
  • wp_site_icon()
Читайте также:  Html onclick event this

Основные

  • calendar_week_mod()
  • get_archives_link()
  • get_bloginfo()
  • get_calendar()
  • get_current_blog_id()
  • get_footer()
  • get_header()
  • get_search_form()
  • get_sidebar()
  • get_template_part()
  • is_404()
  • is_active_sidebar()
  • is_admin()
  • is_archive()
  • is_attachment()
  • is_author()
  • is_category()
  • is_comment_feed()
  • is_date()
  • is_day()
  • is_dynamic_sidebar()
  • is_embed()
  • is_feed()
  • is_front_page()
  • is_home()
  • is_month()
  • is_page_template()
  • is_paged()
  • is_post_type_archive()
  • is_preview()
  • is_search()
  • is_single()
  • is_singular()
  • is_ssl()
  • is_sticky()
  • is_tag()
  • is_tax()
  • is_year()
  • language_attributes()
  • post_type_archive_title()
  • register_sidebar()
  • setup_postdata()
  • the_archive_description()
  • the_archive_title()
  • wp_enqueue_script()
  • wp_enqueue_style()
  • wp_login_form()
  • wp_login_url()
  • wp_loginout()
  • wp_logout_url()
  • wp_lostpassword_url()
  • wp_register()

Источник

SEO Маяк

Всем привет! Сегодня на seo-mayak.com я познакомлю Вас с функцией wp_title(), которая выводит заголовки WordPress, предназначенные для отображения в поисковой выдаче. Также поговорим о теге шаблона и о всем, что с ним связанно.

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

Кто-то может задаться вопросом, мол зачем мне разбираться там во всяких функциях, если у меня сайт на тему выпрашивания огурцов?

Конечно, чтобы создать сайт не обязательно знать, как он работает, но тогда не стоит удивляться, что Ваш горячо любимый проект будет периодически преподносить Вам самые неожиданные «сюрпризы».

Поэтому я не перестану повторять. Если Вы решили стать веб-мастером, то рано или поздно, а лучше рано, Вам все равно придется знакомится с языками программирования, так как без базовых знаний функционала WordPress или другой CMS, Вы не сможете самостоятельно вести свой проект.

Так вот, на написание данного поста, меня сподвигло большое количество вопросов от моих читателей, касательно заголовков title, поэтому считаю, что данный пост будет полезен многим начинающим веб-мастерам.

Меня часто спрашивают, почему заголовок той или иной записи в поисковике отображается не так, как надо, вернее не так, как ожидалось. Например:

Заголовок статьи | Название сайтаНазвание сайта

Название сайтаЗаголовок статьи | Название сайта

Могут быть и другие варианты. Почему так происходит?

wp_title

На самом деле проблема не существенная, в плане ее решения, и исправляется несколькими движениями. Но прежде, чем я расскажу, что делать в такой ситуации, давайте поближе познакомимся с функцией wp_title(). Поехали!

Функция wp_title()

Функция wp_title() выводит в поисковую выдачу заголовок страницы или возвращает его в переменную (внедрена разработчиками WordPress с версии 1.5).

С версии 2.5 появилась возможность задавать функции определенные параметры, подробней об этом чуть позже, а пока я приведу лишь несколько примеров.

Пример №1. Изначально в шаблоне моего кулинарного бога содержимое тегов было таким:

Пример №2. У кого-то могут быть и другие варианты, например:

О функции bloginfo() подробней читайте здесь.

Пример №3. Встречаются еще более сложные разновидности:

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

Единственное, от чего бы я хотел предостеречь начинающих веб-мастеров — это от вывода слишком длинных заголовков в сниппет, так как количество символов в заголовке, пропорционально уменьшает вместимость остального полезного пространства в title.

Итак, вернемся к основной теме. Функция wp_title() находится по адресу wp-includes/general-template.php и вызывается в нужном месте (а это в основном область между тегами , в файле header.php) с помощью, так называемого, тега шаблона:

Если тег wp_title() не передает никаких параметров в функцию, то содержимое тегов title; будет выглядеть следующим образом:

Т.е. не будет выводится названия сайта. Смотрим исходный код и видим такую картину:

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

Получится вот такое безобразие:

Поэтому функции и нужны параметры, передаваемые тегом шаблона, чтобы они помогли «маме» расставить все элементы заголовка по своим местам.

Параметры функции wp_title()

Напомню как выглядело содержимое тегов title на моем кулинарном блоге:

Надеюсь понятно, что название Dommenu.ru я прописал вручную, вместо функции bloginfo(‘name’).

Итак, тег шаблона wp_title() может передавать три параметра:

Параметр №1. Первым параметром тег передает «маме» вид разделителя между заголовком записи и названием сайта.

В моем случаи, в качестве разделителя был указан html-код правых французских кавычек «. Почему это было сделано, мне до сих пор не понятно, Ну да ладно. Конечно можно задать любой разделитель.

Параметр №2. Вторым параметром функция принимает только два аргумента: true или false.

true — дает команду выводить заголовок записи на экран;
false — говорит функции, что надо возвращать заголовок в переменную (По умолчанию true).

Параметр №3. В качестве третьего параметра можно указать только одно выражение right, которое укажет функции, что разделитель надо отображать справа от заголовка записи.

Если вообще не задавать третий параметр, то разделитель будет выведен слева от заголовка.

В общем, по всей логике, заголовок записи моего кулинарного блога в поисковой выдаче должен был иметь следующую структуру:

Заголовок записи « Название сайта

Полное убожество! На самом же деле заголовок в сниппете выглядел так:

Заголовок записи | Название сайта

Как так произошло? Почему один разделитель заменился на другой? Что за аномалия? Примерно такие вопросы пришли мне в голову.

Оказалось, что аномалии никакой нет, просто в работу функции wp_title() вмешался плагин All in One SEO Pack.

Но как он это сделал? Не так давно я опубликовал статью, посвященную функции wp_head, где попытался подробно объяснить, что такое хук и какие они бывают.

Так вот, у функции wp_title() тоже есть свой хук, с помощью которого сторонний алгоритм может вмешиваться на работу функции и влиять на результат конечного действа.

Хук wp_title

Понятно, что плагин All in One SEO Pack для изменения стандартной функции wp_title() использует хук-фильтр и я покажу его простейшее применение на наглядном примере. Для демонстрации хука я временно деактивирую плагин All in One SEO Pack.

Допустим в моем шаблоне содержимое тегов title выглядит так:

Т.е. в функцию не передается никаких параметров. Теперь давайте воспользуемся вышеупомянутым хуком и повлияем на работу функции.

Для этого в файле functions.php, что находится в корне темы, прописываем такой фильтр:

function mayak_wp_title($title) < $title = trim(preg_replace('/&(.+?);/','',$title)); return $title.' | '.esc_attr(get_bloginfo('name')); >add_filter('wp_title', 'mayak_wp_title');

Смотрим результат в исходном коде:

Отлично! Этого мы и добивались! Мы, с помощью хука wp_title, полностью изменили структуру заголовка в сниппете.

А теперь давайте добавим параметры в тег шаблона, а также выведем название сайта с помощью функции bloginfo():

Интересно, что получим. Смотрим исходный код:

В самом начале статьи я уже приводил такой пример заголовка. Теперь надеюсь понятно, из-за чего происходит такое безобразие.

Но наш эксперимент еще не закончен. Самое время активировать плагин All in One SEO Pack и посмотреть, что получится в итоге. Результат немного неожиданный:

Плагин привел заголовок в порядок, несмотря на существование функции и наличие последних изменений в теге шаблона.

Вывод: Правильно настроенный плагин All in One SEO Pack не может стать причиной некорректных заголовков в сниппете!

Итак, что делать, если в поисковой выдаче заголовок выводится в неподобающем виде?

1. Проверить настойки плагина All in One SEO Pack.
2. Если Вы пользуетесь другим SEO плагином, попробуйте его отключить и посмотреть результат в исходном коде.
3. Если Вы вообще не пользуетесь SEO плагинами, тогда проверьте файл functions.php на наличие функции, которая использует хук-фильтр wp_title и если токовая существует, то просто удалите ее и настройте вывод заголовка в теге шаблона.
4. Проверьте тег шаблона на корректность вывода всех параметров, а также названия сайта, если таковое выводиться.

С уважением, Виталий Кириллов

Источник

Оцените статью