Пример функции для seo-заголовков в WordPress 3+
Я не люблю прибегать к лишним плагинам, которые не факт, что хорошо написаны. Поэтому в своих шаблонах я использую код, написанный собственными ручками. В том числе, для генерирования сео-заголовков в «шапке». Делюсь с читателями примером исходничка.
function seo_title() {
$std_title = get_bloginfo('name'); # задаем новый заголовок по умолчанию
/* главная */
if (is_home()) { $newtitle = $std_title; }
/* пост или статичная страница */
if (is_single() || is_page()) { $newtitle = single_post_title("", false) ." - ".$std_title; }
/* просмотр категории */
if (is_category()) { $newtitle = "Вы просматриваете архивы категории <<" . single_cat_title("", false). ">> на " .$std_title; }
/* просмотр архивов по тагу */
if (is_tag()) { $newtitle = "Вы просматриваете архивы по тагу <<" .single_tag_title("", false). ">> на " .$std_title; }
/* результаты поиска */
if (is_search()) { $newtitle = "Результаты поиска по запросу '" . $s. "' - " .$std_title; }
/* custom taxonomy & term */
if (is_tax()) {
$curr_tax = get_taxonomy(get_query_var('taxonomy'));
$curr_term = get_term_by('slug', get_query_var('term'), get_query_var('taxonomy')); # current term data
# if it's term
if (!empty($curr_term)) {
$newtitle = $curr_tax->label . " >> ". $curr_term->name ." - " .$std_title;
} else {
$newtitle = $curr_tax->label ." - " .$std_title;
}
}
return $newtitle;
}
Эту функцию можно совершенствовать до беспредела на ваше усмотрение. А использование очень простое. Во-первых, скопируйте ее в functions.php. И потом исправьте в header.php таг title на следующее:
<title><?php echo seo_title(); ?></title>
Улучшенная функция и ее обсуждение теперь по этой ссылке. Спасибо!
Если на то пошло, то можно добавить функция задания индивидуального title для страницы, к примеру, с помощью дополнительных полей. Иногда это бывает полезно.
Извиняюсь, но это глупость. Title задается в названии поста. Строка 7 вносит этот title в заголовок. Рекомендации по СЕО для заголовков — стараться не делать их слишком длинными. Custom Fields тоже нужно с умом использовать.
А кто говорит, что после этого заголовок будет слишком длинным? возможно нужно просто альтернативный title
А если к примеру такая ситуация, что заголовок записи очень длинный (ну всяко может быть просто).
p.s. в textarea ну очень мелким шрифтом печатается, аж трудно читается что пишешь (ff 3.6.8)
Хотя бы 1.6em поставить. на 1em мелко сильно.
Ну заголовок сам по себе не должен быть длинным. Если не получается полностью сформулировать мысль в кратком заголовке, то, я думаю, лучше прибегнуть к варианту «Краткий заголовок» + поле Excerpt. Так логичнее, мне кажется. Ведь excerpt для того и был создан, чтобы через него передавать описания постов.
ps. постараюсь исправить поскорее косяк со шрифтами
Nice.
Glad to see you here, man :)
Что уже кастом такономи используешь — хорошо. «Вы просматриваете архивы категории» — плохо, и с точки зрения SEO, и с удобства пользователя (несколько неадекватный текст в заголовке таба и хедера окна — сложнее понять, на какую вкладку перейти, когда обрезается).
Ну и в твоем случае код был бы чище, если бы пошел по одному из двух путей: либо ретурнить получившуюся строку сразу в проверке условия, либо лучше добавлять get_bloginfo ('name') в самом конце к $newtitle. Вроде мелочь, а код читаемей сразу становится (это как правило, что if не стоит втягивать в одну строку %)
И, конечно же, можно повесить хук/фильтр на wp_title и тогда в шаблоне header.php (apply_filter ('wp_title', 'seo_title')) ничего не придется менять и функцию можно будет просто переносить между проектами, просто вставляя в фанкшнс.
P.S. И мои 5 копеек по поводу нового шаблона (клевый, да) — «отправить» не кнопкой, непереведенный плагин подписки на комментарии и сломавшая сетку «подписаться на комментарии».
Сергей, учел замечания и пожелания. Сейчас опубликую улучшения :).
С плагином подписки разберусь потом.
Пост переехал сюда.