SEO своими руками: title

Предыдущая запись о seo без плагинов: SEO своими руками: description

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

Заголовок

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

function tp_meta_title ($sep=" / ",$bloginfo_name=''){
	global $wp_query,$post;
	if (!$bloginfo_name) $bloginfo_name = get_bloginfo('name');
	$wp_title = wp_title($sep, 0, 'right');

	if (is_category() || is_tag()){
		$out = $match[1] ? $match[1].$sep : ((is_tag())?"Метка:":"Категория:")." $wp_title";
	}
	elseif (is_singular()) $out = ($free_title = get_post_meta($post->ID, "title", true)) ? $free_title.$sep : $wp_title;
	elseif (is_author()) $out = "Записи автора $wp_title";
	elseif (is_day() || is_month()) $out = "Архив за $wp_title";
	elseif (is_year()) $out = "Архив за $wp_title";
	elseif (is_search()) $out = 'Результаты поиска по запросу: '. strip_tags($_GET['s']) . $sep;
	elseif (is_404()) $out = "Ошибка 404 - страница не существует".$sep.$wp_title;

	$out = trim($out.$bloginfo_name);
	if ($paged = get_query_var('paged')) $out = "$out (страница $paged)";
	return print $out;
}

Эта функция формирует текст для тега title:

  • если это это архив постов определенной категории или постов, помеченных определенным тегом, то заголовок будет вида Категория: Название категории / Название блога (страница) – Описание блога
  • если это это архив постов, помеченных определенным тегом, то заголовок будет вида Метка: Название тега / Название блога (страница) – Описание блога
  • если это архив определенного автора, то заголовок будет вида Записи автора Автор / Название блога (страница) – Описание блога
  • если это архив постов за определенный день, то заголовок будет вида Архив за День / Месяц / Год / Название блога (страница) – Описание блога
  • если это архив постов за определенный месяц, то заголовок будет вида Архив за Месяц / Год / Название блога (страница) – Описание блога
  • если это архив постов за определенный год, то заголовок будет вида Архив за Год / Название блога (страница) – Описание блога
  • если это страница результатов поиска, то заголовок будет вида Результаты поиска по запросу: Поисковый запрос / Название блога (страница) – Описание блога
  • если это страница ошибки 404, то заголовок будет вида Ошибка 404 – страница не существует / Страница не найдена / Название блога – Описание блога

Заголовок формируется из данных о странице. Чтобы он появился, нужно вставить следующий код в файл header.php между head и /head:

 - 

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

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

5 Комментарии

  1. Здравствуйте! Спасибо за это решение.. Всё отлично работает, но не могли бы Вы подсказать каким образом удалить из title, сформированного для поста, название блога..

    • Название блога title страницы формируется строкой

      if (!$bloginfo_name) $bloginfo_name = get_bloginfo('name');

      Замените ее на

      if (!$bloginfo_name) $bloginfo_name = '';
  2. Проблема в том, что мне нужно убрать название блога только из одиночной записи..

    • Ну тогда нужно изменить весь код функции. Вот примерно так:

      function tp_meta_title ($sep=" / ",$bloginfo_name=''){
      	global $wp_query,$post;
      	if (is_category() || is_tag()){
      	    if (!$bloginfo_name) $bloginfo_name = get_bloginfo('name');
      	    $wp_title = wp_title($sep, 0, 'right');	
      	    $out = $match[1] ? $match[1].$sep : ((is_tag())?"Метка:":"Категория:")." $wp_title";
      	}
      	elseif (is_singular()) {
      	    if (!$bloginfo_name) $bloginfo_name = '';
      	    $sep = '';
      	    $wp_title = wp_title($sep, 0, 'right');	
      	    $out = ($free_title = get_post_meta($post->ID, "title", true)) ? $free_title.$sep : $wp_title;
      	}    
      	elseif (is_author()) {
      	    if (!$bloginfo_name) $bloginfo_name = get_bloginfo('name');
      	    $wp_title = wp_title($sep, 0, 'right');
      	    $out = "Записи автора $wp_title";
      	}    
      	elseif (is_day() || is_month()) {
      	    if (!$bloginfo_name) $bloginfo_name = get_bloginfo('name');
      	    $wp_title = wp_title($sep, 0, 'right');
      	    $out = "Архив за $wp_title";
      	}    
      	elseif (is_year()) {
      	    if (!$bloginfo_name) $bloginfo_name = get_bloginfo('name');
      	    $wp_title = wp_title($sep, 0, 'right');
      	    $out = "Архив за $wp_title";
      	}    
      	elseif (is_search()) {
      	    if (!$bloginfo_name) $bloginfo_name = get_bloginfo('name');
      	    $wp_title = wp_title($sep, 0, 'right');
      	    $out = 'Результаты поиска по запросу: '. strip_tags($_GET['s']) . $sep;
      	}    
      	elseif (is_404()) {
      	    if (!$bloginfo_name) $bloginfo_name = get_bloginfo('name');
      	    $wp_title = wp_title($sep, 0, 'right');
      	    $out = "Ошибка 404 - страница не существует".$sep.$wp_title;
      	}    
      	$out = trim($out.$bloginfo_name);
      	if ($paged = get_query_var('paged')) $out = "$out (страница $paged)";
      	return print $out;
      }
      

      Тут для каждого вида страницы формируется свой title. Для постов он определяется условием is_singular.

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*