WordPress как на ладони

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 <title> tag in the document head, and expect WordPress to
 * provide it for us.
 */
add_theme_support( 'title-tag' );

В основе работы 'title-tag' лежит функция wp_get_document_title().

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

Этот Тег шаблона можно использовать повсеместно, как за пределами Цикла WordPress, так и внутри него. Обычно его используют для указания заголовка страницы в теге <title> в <head> части страницы.

1 раз — 0.000125 сек (быстро) | 50000 раз — 2.32 сек (быстро)
Хуки из функции

Возвращает

Строку|null. Строку при получении, null – при отображении.

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

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

Примеры

2

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

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

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

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

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

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

Получим: Заголовок блога » Название поста

0

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

<title><?php bloginfo('name'); ?> <?php wp_title("", true); ?></title>
0

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

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

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

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

Выведем название блога затем заголовок страницы и в качестве разделителя установим знак "|".

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

Получим: Заголовок блога | Заголовок страницы

Важно! Не используйте в качестве разделителя знаки "_" и "--". Это может вызвать ошибки.

Заметки

  • Global. WP_Locale. $wp_locale WordPress date and time locale object.

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

С версии 1.0.0 Введена.

Код wp_title() WP 6.5.2

function wp_title( $sep = '&raquo;', $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 (either 'left' or 'right').
	 */
	$title = apply_filters( 'wp_title', $title, $sep, $seplocation );

	// Send it out.
	if ( $display ) {
		echo $title;
	} else {
		return $title;
	}
}
24 комментария
Полезные 3 Все
    Войти