Избавляемся от All in One Seo Pack или SEO в wordpress без плагинов

Автор cyclop, 14-05-2011, 21:23:10

« назад - далее »

cyclopTopic starter

Думаю многим известно, что чем меньше плагинов мы вешаем на свой сайт, тем быстрее он работает.

All in One SEO Pack и Platinum SEO Pack имеют много функций, но многие пользуются только основными возможностями.(Сравнение возможностей этих плагинов можете почитать в авторской статье) Которые и имеет предложенный легковесный скрипт php:
-  Перезапись мета Заголовков;
-  Генерация description и keywords;
-  Генерация мета поля robots, в котором указывается как индексировать страницу.
Что касается создания мета тега canonical (для предотвращения дублирования контента), то с версии 2,9 разработчики WordPress уже об этом позаботились.

Автор этой замечательной функций Kama:
[spoiler=функции]/** мета заголовок (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_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]:'';
}
elseif (is_home()) $out=$home_description;
if ($out){
$out = str_replace( array("\n","\r"), ' ', strip_tags($out) );
$out = preg_replace("@\[.*?\]@", '', $out); //удаляем шоткоды
return print "<meta name='description' content='$out' />\n";
}
else return false;
}

/** метатег 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 = "index,follow"){
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() && $robots = get_post_meta($post->ID,'robotsmeta',true))
$out = $robots;
return print "<meta name='robots' content='$out' />\n";
}
[/spoiler]

Для её использования нужны базовые знания php.

Этот код нужно поместить в файл functions.php вашей темы. Чтобы функция начала работать, её нужно поместить в файл header.php вашей темы.
Для замены заголовков <?php kama_meta_title () ?>
Для генерации описания: <?php kama_meta_description () ?>
Для генерации кейвордов: <?php kama_meta_keywords () ?>
Для метатега robots: <?php kama_meta_robots () ?>

Вставляете в начало файла(header.php), где прописываются meta, обычно после этой строки:
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />

Если вы хотите написать для поста или страницы свой заголовок/кейворды/описание:
Для того, чтобы прописать для поста своё описание, вставьте нужный текст в поле Цитата при добавлении записи.
Для прописывания своих кейвордов при добавлении записи создайте произвольное поле. В Имя пишете keywords, в значение необходимые ключевые слова. Для заголовков аналогично, только Имя title.
Чтобы закрыть от индексации страницу или пост нужно создать произвольное поле robotsmeta со значением noindex,nofollow.

Функции не будут работать и соответственно загружать движок, пока вы их не запустите в header.php.


br2

Цитата: cyclop от 14-05-2011, 21:23:10
Думаю многим известно, что чем меньше плагинов мы вешаем на свой сайт, тем быстрее он работает.

All in One SEO Pack и Platinum SEO Pack имеют много функций, но многие пользуются только основными возможностями.(Сравнение возможностей этих плагинов можете почитать в newbielink:http://wp-kama.ru/id_86/sravnenie-seo-plaginov-platinum-seo-pack-i-all-in-one-seo-pack-i-otkaz-ot-nih.html [nonactive]) Которые и имеет предложенный легковесный скрипт php:
-  Перезапись мета Заголовков;
-  Генерация description и keywords;
-  Генерация мета поля robots, в котором указывается как индексировать страницу.
Что касается создания мета тега canonical (для предотвращения дублирования контента), то с версии 2,9 разработчики WordPress уже об этом позаботились.

Автор этой замечательной функций newbielink:http://wp-kama.ru/ [nonactive]:
[spoiler=функции]/** мета заголовок (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_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]:'';
}
elseif (is_home()) $out=$home_description;
if ($out){
$out = str_replace( array("\n","\r"), ' ', strip_tags($out) );
$out = preg_replace("@\[.*?\]@", '', $out); //удаляем шоткоды
return print "<meta name='description' content='$out' />\n";
}
else return false;
}

/** метатег 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 = "index,follow"){
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() && $robots = get_post_meta($post->ID,'robotsmeta',true))
$out = $robots;
return print "<meta name='robots' content='$out' />\n";
}
[/spoiler]

Для её использования нужны базовые знания php.

Этот код нужно поместить в файл functions.php вашей темы. Чтобы функция начала работать, её нужно поместить в файл header.php вашей темы.
Для замены заголовков <?php kama_meta_title () ?>
Для генерации описания: <?php kama_meta_description () ?>
Для генерации кейвордов: <?php kama_meta_keywords () ?>
Для метатега robots: <?php kama_meta_robots () ?>

Вставляете в начало файла(header.php), где прописываются meta, обычно после этой строки:
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />

Если вы хотите написать для поста или страницы свой заголовок/кейворды/описание:
Для того, чтобы прописать для поста своё описание, вставьте нужный текст в поле Цитата при добавлении записи.
Для прописывания своих кейвордов при добавлении записи создайте произвольное поле. В Имя пишете keywords, в значение необходимые ключевые слова. Для заголовков аналогично, только Имя title.
Чтобы закрыть от индексации страницу или пост нужно создать произвольное поле robotsmeta со значением noindex,nofollow.

Функции не будут работать и соответственно загружать движок, пока вы их не запустите в header.php.

Добавлю, если у Вас на сайте присутствуют больше, чем одна страница, то для вывода меток для страниц нужно добавить, вернее-немножечко изменить функцию:

function km_meta_keywords ($home_keywords=" ",$def_keywords=" "){
global $wp_query,$post;
if ( is_page() && !$out=get_post_meta($post->ID,"keywords",true) ){
$out = "";
$res = wp_get_object_terms( $post->ID, array("post_tag","page"), array("orderby" => "none") ); // получаем страницы и метки
if ($res) foreach ($res as $tag) $out .= " {$tag->name}";
$out = str_replace(" ",", ",trim($out));
$out = "$out $def_keywords";
}
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;
}


И сам вывод меток - не <?php kama_meta_keywords () ?>  , а - <?php km_meta_keywords () ?> ..... и будет Вам счастье.....:))
"офф" != "фсё" ;)
  •  


gadalka

#2
Да, это правильное утверждение. Чем меньше плагинов вы используете на своем сайте, тем быстрее он будет работать. All in One SEO Pack и Platinum SEO Pack имеют много функций, но многие из них не используются большинством пользователей. Вместо этого вы можете использовать легковесный скрипт php, который предлагает перезапись мета заголовков, генерацию description и keywords, а также мета поля robots для индексации страницы.

Кроме того, с версии 2.9 разработчики WordPress добавили функцию для создания мета тега canonical, который предотвращает дублирование контента.

Для использования этих функций вам потребуются базовые знания php. Код нужно поместить в файл functions.php вашей темы, а функцию нужно вызвать в файле header.php вашей темы.

Если же вы хотите задать свой заголовок/keywords/описание для поста или страницы, вы можете использовать поле цитаты для описания, произвольное поле для ключевых слов и мета тег robotsmeta со значением "noindex,nofollow" для закрытия страницы от индексации.

Функции не будут работать и загружать движок, пока вы не запустите их в файле header.php.
  •  

tolev

прикольный некропостинг...
набиваем  сообщения?
уважаемый, будьте так любезны укажите  полный список установленных вами плагинов, и напротив каждого - для чего вы его установили....
SPYSERP  Лучшее отслеживание позиций, анализ выдачи и много полезного, рекомендую (рефка);
  •  

borzoid