Какова действительная необходимость СЕО плагинов для 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 (предыдущие записи из категории) ← 4.Май.2010 // 94
- Перелинковка статей (предыдущие записи) ← 19.Апр.2010 // 60
- Функция для вывода последних записей в WordPress ← 17 Май 2010 // 110
- Мой метод избавления от спама в комментариях, для WordPress ← 10 Май 2010 // 13
- Как запустить обработку формы используя JavaScript ← 10 Май 2010 // 5


Спасибо, очень пригодилась статья.
Вот только у плагинов есть удобная функция - можно задать тайтл записи в виде:
%post_title% | %category_title%
А как сделать это с помощью вашего метода?
Код дописывать надо вроде. Используйте плагин для этой функции.
Я вот насчет альтернативы не понял, а куда код-то впихивать?
А то мне вот именно нужно изменить титлы в рубриках.
Тимур, вопрос:
Сделал так как ты и написал, никаких мета полей не добавилось(ни в редакторе постов, ни в редакторе категорий). Смотри:
http://i46.tinypic.com/mj8oll.jpg
На странице категорий должны добавиться были метаданные: description, keywords
Я не уверен, что в поздних версиях плагинов, остались эти фишки, может в этом проблема.
есть вопросец:
1. Так как установить мета описания (description) для страниц категорий / меток в новых версиях ВП?
2. Я заметил, что в твоем плагине не используются мета теги: noodp, noydir, noarchive, nosnippet. Почему? Не столь важны по твоему мнению?
И еще как добавить описание на страницу архива? Это я про ту, которая создается автоматически, например, при создании произвольного типа записи под названием "books" будет доступна по адресу site.ru/books.
Ага, я вообще точно не знаю что они означают
Используя условные теги, пожалуй больше никак. Но это не много работы, если только новый тип записей нужно описать... 1 тег, 1 описание, можно и в шаблон сунуть, не страшно. Или в настройки шаблона...
спасибо за быстрый ответ! - понял))
а почему никогда не говорят про поисковую систему mail.ru(чтоб его..)?
или он аналогичен яндексу? или это вообще не поисковая система)
Автор, ну расскажите куда вставить код
Я имею ввиду код, выложенной Вами плагина-альтернативы. Т.е. для этого файл нужно создать ведь? Я php только начал изучать и мне не страшно
Не понимаю этого, там ведь просто всё, но Вы как-то пропустили этот момент.
Функции вставляете куда-нибудь: можно в functions.php, можно вниз header.php (потому что они только там и будут использоваться). Затем head части документа вызываете каждую функцию соответственно:
Можно с параметрами, которые описаны для функций.
Тимур, подскажите, когда я создавала сайт, то настроила ЧПУ не совсем красиво, сейчас захотела поменять, а сайт уже индексируется...
Правильно ли я поняла, что Platinum SEO все это правит, просто нужно галочку в самом первом пункте и все будет редиректится без возмущения от поисковиков?
Могу ошибаться, но необходимый редирект уже делается самим WordPress... Вам бы просто по факту проверить: смените ЧПУ и попробуйте зайти по старому адресу...