Какова действительная необходимость СЕО плагинов для WordPress platinum SEO Pack или All in One SEO Pack?
В последнее время меня все чаще посещает желание сместить в сторону свалки плагин All in One SEO Pack и его "близнеца" platinum SEO Pack, которые я использую для СЕО оптимизации. На некоторых своих сайтах уже от них избавился, в частности на этом. Почему? Потому что, большая часть их функциональности почти всегда остается не у дел, например, 301 редирект. Также, не очень нравится, как генерируется описание (description) и кейворды (keywords). Заглянув в код, желание породнить эти плагины со свалкой стало только крепче, потому что все это можно сделать проще, немного подредактировав header.php. Однако, не хочу никого вводить в заблуждение, что эти плагины сильно нагружают систему, какие-то монстры от которых лучше избавиться, нет, это не так: ими очень даже можно успешно пользоваться!
В этой статье я попробую ответить на вопрос: есть ли объективные причины отказаться от вышеупомянутых СЕО комбаинов и какова жертва? Также я постараюсь подробно рассмотреть оба плагина, чтобы прояснить для себя и для вас, чем же все-таки эти плагины занимаются и в чем их различия. Для начала, я решил подробно разобраться в том, что входит в задачи platinum SEO Pack и All in One SEO Pack и какие из их функций имеют первостепенную необходимость, чем можно их заменить, дабы избавится от них. А также, сравнивая функциональность, можно понять, чем отличаются эти плагины и какой плагин все же лучше. Рассмотрим возможности, которые описываются разработчиками этих плагинов:
Возможности Platinum SEO Pack
- Автоматический 301 редирект при изменении постоянных ссылок (УРЛов) - (нет в All in one SEO);
- Можно смело менять структуру постоянных ссылок (permalink). При изменении структуры постоянных ссылок плагин автоматически создает 301 редирект на новое расположение страниц, таким образо весь ПР должен перетечь на новые страницы. (нет в All in one SEO);
- Канонические URL'ы (rel='canonical' в метатегах, подробнее можете прочитать, например, тут). Помогает избежать дублирование контента;
- Настраиваемая автоматическая генерация мета заголовков у постов и страниц;
- Автоматическая генерация всех SEO тегов (title, discription, keywords);
- Настройки для установки мета описания (description) для страниц категорий / меток. см. тут (нет в All in one SEO);
- Возможность выключить, метазаголовки у определенных постов или страниц;
- Настроить формат мета заголовка (title) у постов или страниц;
- Возможность переписать заголовок (title), ключевые слова (keywords) и описание (description) для постов и страниц;
- Совместим со многими плагинами, такими как like Auto Meta, Ultimate Tag Warrior и другими;
- Добавляет index, noindex, follow or nofollow, noodp, noydir, noarchive, nosnippet мета теги к постам и страницам. (нет в All in one SEO).
Возможности All in One SEO Pack
- Продвинутые Канонические URL'ы (в чем "продвинутость" непонятно);
- Использует свои фильтры, которые выступают как API. Благодаря этому другие плагины или темы могут расширять функциональность плагина;
- Единственный плагин, который поддерживает СЕО интеграцию для WP e-Commerce сайтов;
- Nonce защита (такая защита используется повсеместно в WordPress - принцип одноразового использования);
- Автоматически генерирует мета заголовок (Title);
- Генерирует остальные мета теги (description, keywords);
- Предотвращает дублирование контента, характерного для WordPress;
- Множество настроек;
- Можно устанавливать мета заголовки (title), описание (description) и ключевые (keywords) слова для каждой записи / страницы.
- Совместим с плагинами, такими как like Auto Meta, Ultimate Tag Warrior и др.
Жирным-зеленым выделены те моменты ради чего плагин создавался в первую очередь, некоторые их которые хотелось бы реализовать без использования плагина. Серым выделены не особо нужные, на мой взгляд, возможности, от которых можно безболезненно отказаться. Теперь, сравнивая эти два плагина, пожалуй, можно сказать, что более функциональным является platinum SEO Pack (за исключением некоторых пунктов), хотя оба плагина очень похожи.
Преимущества platinum SEO Pack над All in One SEO Pack:
- Создает 301 редирект при любых изменениях в постоянных ссылках (URL'ах). Насколько это востребованная функция и кому она нужна сказать сложно, но я этой функцией плагина не пользовался никогда. Имею ввиду, если мне нужен был 301 редирект я его ставил в .htaccess. А менять постоянные ссылки у уже опубликованных страниц крайне не рекомендуется! И по-моему этим никто не занимается;
- Есть возможность настроить описание (description) и ключевые слова (keywords) отдельно для каждой рубрики и метки;
- Можно указать robots значения: index, noindex, follow и т.д. для каждого поста или страницы в отдельности. (для всех видов архивов index, noindex (индексация) настраивается так же как и в platinum SEO)
All in One SEO Pack по большому счету преимуществами не обладает, единственное - это пунк 3 - интеграция в e-Commerce, но она нужно только тем, кто использует этот самый e-Commerce. Все остальное Nonce защита, API и т.д. по-моему не так важны. Что касается функции Канонических URL'ов (присутствует у обоих плагинов), этот мета тег (rel='canonical') уже реализован в самом WordPress, начиная с версии 2.9.
А знаете ли вы?
Полезной фитчей у platinum SEO Pack, о которой знают не все, является пункт 6 - настройка мета описания и ключей для категорий и меток. Для тех, кто пользуется этим плагином опишу как использовать эту функцию: Заходим в админ-панель Записи -> Рубрики, жмем "изменить" (редактируем рубрику) и в поле "описание" пишем так: [description]Здесь пишем описание рубрики, которое потом будет отображатся в мета description[/description] [keywords]Здесь пишем ключевые слова (keywords) для рубрики, через запятую (keyword 1, keyword 2, keyword 3 и т.д.)[/keywords] После этого у рубрики автоматически появятся мета поля: description и keywords.
В заключении сравнения плагинов, от себя скажу, что теперь большее предпочтение отдаю, пожалуй, platinum SEO Pack.
Альтернатива
Теперь, перейдем к тому, что нужно сделать, чтобы отказаться от этих плагинов
Оба эти плагина создавались ради 3-х основных вещей:
- Перезапись мета Заголовков;
- Генерация description и keywords;
- Генерация мета поля robots, в котором указывается как индексировать страницу.
Теперь, замена плагина сводится к реализации трех пунктов, чем мы сейчас и займемся.
Выложу сразу, получившейся у меня код, который реализует все эти три пункта, что к чему объясняется сразу в коде.
/** мета заголовок (title):
- Первый параметр функции это разделитель, второй название блога (если не указать берется из Настроек).
- Для меток и категорий указывается в настройках в описании (в настройках, по аналогии с пунком 6 Platinum SEO Pack, см. выше) так: [title=Заголовок]
- Для страниц или постов, если вы хотите чтобы заголовок страницы отличался от заголовка поста, то создайте произвольное поле title и впишите туда свое название
------------------------------------- */
function kama_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()){
$desc = $wp_query->queried_object->description;
if ($desc) preg_match ('!\[title=(.*)\]!iU',$desc,$match);
$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() || 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;
}
/** мета описание (description):
- Для главной страницы описание указывается в функции, так: kama_meta_description ('Здесь описание блога');
- Для страниц меток и категорий указывается в описании (в настройках, по аналогии с пунком 6 Platinum SEO Pack, см. выше), так: [description=текст, описание]
- У постов сначала проверяется, произвольное поле description, если оно есть описание берется оттуда, потом проверяется поле "цитата", если цитаты нет, то описание берется как начальная часть контента.
- вторым параметром в функции указывается колличество символов для описания: kama_meta_description ('Описание для главной страницы',200);
------------------------------------- */
function kama_meta_description( $home_description='', $maxchar=200 ){
global $wp_query,$post;
if( is_front_page() )
$out = $home_description;
elseif( is_singular() ){
if ( $descript = get_post_meta($post->ID, "description", true) )
$out = $descript;
elseif ($post->post_excerpt!='')
$out = trim(strip_tags($post->post_excerpt));
else
$out = trim(strip_tags($post->post_content));
$char = iconv_strlen( $out, 'utf-8' );
if( $char > $maxchar ){
$out = iconv_substr( $out, 0, $maxchar, 'utf-8' );
$words = split(' ', $out );
$maxwords = count($words) - 1; //убираем последнее слово, ибо оно в 99% случаев неполное
$out = join(' ', array_slice($words, 0, $maxwords)).' ...';
}
}
elseif( is_category() || is_tag() ){
$desc = $wp_query->queried_object->description;
if( $desc )
preg_match ('!\[description=(.*)\]!iU',$desc,$match);
$out = $match[1]?$match[1]:'';
}
if( !empty($out) ){
$out = str_replace( array("\n","\r"), ' ', strip_tags($out) );
$out = preg_replace("@\[.*?\]@", '', $out); //удаляем шоткоды
echo '<meta name="description" content="'. $out .'" />'."\n";
}
return;
}
/** метатег keywords:
- Для главной страницы, ключевые слова указываются в функции так: kama_meta_keywords ('слово1, слово2, слово3');
- Также можно вписать ключевые слова во второй параметр, они будут отображаться (добавляться) на всех страницах сайта: kama_meta_keywords ('<ключевики для главной>','<сквозные ключевики>');
- Чтобы задать свои keywords для записи, создайте произвольное поле keywords и впишите в значения необходимые ключевые слова. Если такого поля у записи нет, то ключевые слова генерируются из меток и названия категории(й).
- Для страниц меток и категорий ключевые слова указываетются в описании (в настройках, по аналогии с пунком 6 Platinum SEO Pack, см. выше) так: [keywords=слово1, слово2, слово3]
------------------------------------- */
function kama_meta_keywords ($home_keywords='',$def_keywords=''){
global $wp_query,$post;
if ( is_single() && !$out=get_post_meta($post->ID,'keywords',true) ){
$out = '';
$res = wp_get_object_terms( $post->ID, array('post_tag','category'), array('orderby' => 'none') ); // получаем категории и метки
if ($res) foreach ($res as $tag) $out .= " {$tag->name}";
$out = str_replace(' ',', ',trim($out));
$out = "$out $def_keywords";
}
elseif (is_category() || is_tag()){
$desc = $wp_query->queried_object->description;
if ($desc) preg_match ('!\[keywords=(.*)\]!iU',$desc,$match);
$out = $match[1]?$match[1]:'';
$out = "$out $def_keywords";
}
elseif (is_home()){
$out = $home_keywords;
}
if ($out) return print "<meta name='keywords' content='$out' />\n";
return false;
}
/** метатег robots:
- Чтобы задать свои атрибуты метатега robots ДЛЯ ЗАПИСИ или СТРАНИЦЫ, создайте произвольное поле robotsmeta со значением необходимых атрибутов (например, чтобы закрыть от индексации страницу или пост нужно создать произвольное поле robotsmeta со значением noindex,nofollow)
- По умолчанию не индексируются страницы поиска и архив за день, страница входа на сайт и регистрации, а так же RSS фиды, чтобы разрешить или запретить индексацию групп/типов (страницы меток, авторов и т.п.) раскомментируйте (уберите # ниже в коде).
----------------------------------------- */
function kama_meta_robots ($out = ''){
global $post;
$eURL = $_SERVER['REQUEST_URI'];
if ( // раскомментируйте нужные строки ниже - раскомментировано значит закрыто от индексации
#is_category() || // категории
#is_tag() || // метки
#is_author() || // архив автора
#is_year() || // архив за год
#is_month() || // архив за месяц
is_day() || // архив за день
strpos($eURL, '/wp-login.php') !== false || // страница входа на сайт
strpos($eURL, '/wp-register.php') !== false || // страница регистрации
#strpos($eURL, '/comment-page') !== false || // страницы комментариев
is_search() || // страница поиска
is_feed() // rss фиды
) $out = "noindex,nofollow";
if( is_singular() ){
if( $robots = get_post_meta($post->ID, 'robots', true) )
$out = $robots;
}
if( $out )
return print "<meta name='robots' content='$out' />\n";
return;
}
Важно! Обратите внимание, что
<title><?php kama_meta_title (" | "); ?></title>
этой строкой мы заменяем существующий в header.php заголовок, примерно такой (с default темы):
<title><?php wp_title('«', true, 'right'); ?> <?php bloginfo('name'); ?></title>
Так же если вам не нужны: описание, ключевые слова или robots параметры удаляем соответственно строки вызова функций, так же можно удалить соответствующую функцию в коде (вы наверное заметили что код состоит из 4-х функций).
Перезапись заголовков
Во многих темах в целом заголовки уже сами генерируются так как нужно, поэтому часто перезапись заголовков вообще не нужна. Сейчас я говорю о такой структуре заголовков: <название страницы (учитывая метки, категории и т.п.)> | <Название блога/сайта>. Перезапись нужна, если для новостей вы хотите использовать заголовки отличные от названия поста/страницы и с учетом некоторых особенностей (например, заголовок у страницы навигации с пометкой какая по счету эта страница и т.п.) . Вся структура реализовывается, грубо говоря, двумя функциями ВП wp_title(); и get_bloginfo('name'); с внедрением условий. Генерация description и keywords - существует довольно обоснованное мнение, что метатеги description и keywords уже не имеют никакого значения для поисковой оптимизации, насколько это правда я не знаю, поэтому использовать их или нет решать вам.
На любые вопросы отвечу в комментариях, если буду компетентен конечно.
П.С. Узнайте, как получить много трафика из социальных сетей при помощи социальных голосований.
Благодарность блогу Альтернативный взгляд на WordPress за помощь в разработке сайта.
- Предыдущие по меткам
- Предыдущие записи
- Перелинковка статей в WordPress (предыдущие записи из категории) ← 4.Май.2010 // 87
- Перелинковка статей (предыдущие записи) ← 19.Апр.2010 // 51
- Функция для вывода последних записей в WordPress ← 17 Май 2010 // 102
- Мой метод избавления от спама в комментариях, для WordPress ← 10 Май 2010 // 11
- Как запустить обработку формы используя JavaScript ← 10 Май 2010 // 4


Здравствуйте. Большое спасибо за скрипт, одним плагином меньше. Кама, здесь в выше подобный вопрос задавался, он касался категорий. А можно ли сделать так, чтобы нигде не выводилось название блога? Запись, категория | Название блога
Эту строчку вроде удалить и достаточно:
if (!$bloginfo_name) $bloginfo_name = get_bloginfo('name');
Спасибо, работает везде))) и на главной странице название блога не отображается, только URL. Извиняюсь за занудство, если это возможно как-то подправить, то, пожалуйста, подскажите как сделать чтобы в постах и рубриках не было названия блога, а на главной было.
Здравствуйте не достаточно убрать строку "if (!$bloginfo_name) $bloginfo_name = get_bloginfo('name');"
Подскажите пожалуйста как можно сделать что бы ни где не выводилось название блога? Нужно что бы выводилось только то что сам добавил по Произвольное поле title
Удалил из кода ",$bloginfo_name=''" и "if (!$bloginfo_name) $bloginfo_name = get_bloginfo('name');"
Стало так как надо, если в Произвольном поле title ни чего не указывать то в теги title будет название страницы.
У меня достаточно удаления этой строки if (!$bloginfo_name) $bloginfo_name = get_bloginfo('name');, как и при удалении совместно с этой ",$bloginfo_name=''". Рустам, у Вас после удаления этих строк на главной название блога выводится в title? У меня нет. Если знаете как сделать, чтобы выводилось, подскажите, пожалуйста.
У меня на главной выводиться в title, на главной отображается статическая страница
Отличная работа. Жалко, что не плагин, и надо сидеть в коде копаться, чтобы подобное сотворить. Но глядя на оформление, с доверием и к постам относишься, что разбирающийся человек пишет, а не банальный рерайт.
Очень полезный блог. Спасибо, кое что потырю
У меня почем-то title не заменяется на seo title из данной функции. При просмотре кода страницы выдает title который указан в название поста.
wordpress 3.3 в чем может быть проблема?
вот интересно у вас в примере кавычки одинарные (') а обычно в мета тегах все пишут двойные, это что значит разницы нет какие использовать что ли ?
Нет, разницы нет никакой. Ну, двойные вроде как более правильно все-таки.
Не ужели трудно ответить?
В чем причина у меня почем-то title не заменяется на seo title из данной функции. При просмотре кода страницы выдает title который указан в название поста.
wordpress 3.3.1