Seo-Бизнес блог Progress-project

Все о создании, продвижении сайтов и заработке в интернете

Обновлённый дизайн блога Progress-project
logotip «Progress-project»
logotip «Progress-project»

СЕО — оптимизация своими руками или альтернатива SEO плагинам

Добрый день, в одной из прошлых наших статей на «Progress-project» мы с вами проверяли какой именно плагин больше всего нагружает блог и тогда же выяснили, что на: abrek-ad-abra.ru основная часть от общего времени уходящего на загрузку всех плагинов приходится в основном на два из которых первый; «SyntaxHighlighter», выполняющий вывод и под-цветку кода в статье и от которого мы уже благополучно избавились поменяв на кодовый вариант и всем известный спец-плагин: «All in One SEO», от которого сегодня так же подошла очередь избавляться.

Но прежде чем приступать к его де-активации и полному удалению давайте проанализируем всем ли его активным функциям мы нашли достойную альтернативную замену?

Обзор SEO спец-плагинов «All in One SEO» — «Platinum SEO Pack» и замена их на кодовые аналоги

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

Я не стану перечислять по отдельности все возможности каждого из них а приведу общий список только тех возможностей которые на мой взгляд боле менее полезны. И дальше мы с вами уже посмотрим на, что их можно поменять.

Важные на мой взгляд функции: «All in One SEO» и «Platinum SEO Pack»:

  1. Авто-генерация заголовков мета тега: «Title»;
  2. Создание тегов: «description» и «keywords»;
  3. Возможность создавать свои собственные теги: «Title», «description» и «keywords», отдельно для каждой странички или поста:
  4. Возможность авто-генерации тега: «description» для рубрик или же меток;
  5. Изменения упомянутых выше тегов: «Title», «description», «keywords»;

Менее полезные функции: «All in One SEO» и «Platinum SEO Pack»:

  1. Авто — пере направление «301 редирект» при смене линков;
  2. Обозначение канонических url, мета тег: «rel=’canonical’» подробнее читайте тут;
  3. Возможность создания: sitemap.xml, карты блога для поисковых систем;
  4. Применения тегов: «follow», «or nofollow», «index», «noindex», «noodp», «noarchive», «nosnippet», «noydir», про использование на своём блоге мета тега robots можно прочесть здесь.

Как я уже писал на этом все возможности сео — плагинов не заканчиваются, но они ещё менее востребованы и вы легко найдёте в сети им замену.

Как вы сами можете видеть в основном у нас всё сходится на создании мета тегов: «Title», «description» и «keywords», давайте разберёмся, как можно вывести данные теги в нужных местах и с необходимым содержимым без применения какого либо сео — плагина так здорово нагружающего сервер.

Оптимизация seo — вывод мета тегов Title, description и keywords, без спец-плагинов

На сегодня в наличии у меня имеется сразу два кода способных просто безупречно справляться с поставленной задачей, но сегодня я расскажу вам только об одном из них.

Но прежде, чем начать его внедрение на свой блог, нам придётся руками создать для нашего каждого отдельного поста а так же страниц, свои произвольные поля с названием и необходимым содержимым новых мета тегов.

Конечно это может занять определённое время в зависимости от уже имеющегося на сайте материала, но уверяю вас это стоит того, так как мы не просто создадим SEO — адаптированную тему, но и избавим свой проект от реально тормозящего его загрузку плагина который с каждым очередным обновлением становится только тяжелее.

Вообще я считаю, что использовать такой громоздкий плагин ради вывода трёх мета тегов несколько неоправданно.

Создание произвольных полей для Title, description, keywords

Чтобы создать произвольное поле на сайте либо блоге WordPress, в админ панели на страничке редактирования записи или страницы, над редактором в верхнем правом углу выбераем: «Настройки экрана», после чего в открывшейся вкладке ставим галочку в чебоксе «Произвольные поля».

После этого чуть ниже статьи у нас появится форма для создания произвольных полей:

Для будущего мета тега «Title» в поле имя пишем title, в поле значение вписываем необходимый заголовок и нажимаем «Добавить произвольное поле».

Для описания «Description» имя пишем description, в значение, описание того или иного поста или же страницы, так же добавляем поле.

Для ключевых слов «Keywords» имя keywords, в значение указываем ключевые слова, через запятую, сохраняем новое произвольное поле.

Данную процедуру производим с каждой отдельной статьёй или страницей в отдельности, конечно предложенный мной сегодня код и сам способен генерировать содержание мета тегов из описания, заголовков и первых нескольких слов поста, но это не всегда соответствует сео оптимизации, поэтому лучше всё таки всё сделать руками.

Установка кода выводящего мета теги Title, description, keywords

Чтобы установить код сео — оптимизации сайта, нам необходимо открыть для редактирования файл темы: «functions.php» где в самый верх после: <?php вставить следующий код:

// action для добавления meta в секцию header
add_action('wp_head', 'addmetatags',1);
function addmetatags() {
$kolallkey=25; //Количество ключевых слов на главной странице
$kolcatkey=9;  //Количество ключевых слов на странице рубрики и тега
$koldesk=20;   //Количество слов для description в публикациях при автоматической вставке
$sep='|';     //Разделитель для title
  // если это главная страница
    if ( (is_home()) || (is_front_page()) ) {
      // формируем title из названия блога
        echo '<title>'.get_bloginfo('name').'</title>'."\r\n";
      // формируем description из главного описания блога
        echo '<meta name="description" content="'.get_bloginfo('description').'" />'."\r\n";
      // формируем keywords слова из 25 самых популярных тегов блога
        $tags = get_tags( array('orderby' => 'count', 'order' => 'DESC', 'number'=>$kolallkey) );
        if ($tags){
          foreach ((array) $tags as $tag){$alltags[]=$tag->name;}
          $alltags=implode(', ',$alltags);
          echo '<meta name="keywords" content="'.$alltags.'" />'."\r\n";
        }
  // если это рубрика
    } elseif(is_category()) {
      // формируем title из названия текущей рубрики и названия блога
        echo '<title>Рубрика - '.single_cat_title("", false).' '.$sep.' '.get_bloginfo('name').'</title>'."\r\n";
      // формируем description из описания текущей рубрики
        echo '<meta name="description" content="Рубрика - '.single_cat_title("", false).'. '.str_replace(array('<p>','</p>',"\n"),'', category_description(the_category_ID(false))).'" />'."\r\n";
      // формируем keywords из тегов статей рубрики, всего 9 ключей
        $posts=get_posts('showposts=-1&cat='. the_category_ID(false));
       foreach ($posts as $pstid){
         $tagspost=wp_get_post_tags($pstid->ID, array('orderby' => 'count', 'order' => 'DESC'));
         if($tagspost) foreach ((array) $tagspost as $tagspostcur){$keycat[$tagspostcur->name]=$tagspostcur->count;}
       }
       if($keycat){
            arsort($keycat);
            $arrcatkey=array_slice(array_keys($keycat), 0, $kolcatkey);
            $cattags=implode(', ',$arrcatkey);
        echo '<meta name="keywords" content="'.$cattags.'" />'."\r\n";
        }
  // если это страница тега
    } elseif(is_tag()) {
        global $posts;
        foreach ($posts as $pstag){
            $tagspost=wp_get_post_tags($pstag->ID, array('orderby' => 'count', 'order' => 'DESC'));
            $tagtitle[]=$pstag->post_title;
            if($tagspost) foreach ((array) $tagspost as $tagspostcur){$keyptag[$tagspostcur->name]=$tagspostcur->count;}
        }
      // формируем title из названия текущего тега и названия блога
         echo '<title>Публикации тега - '.single_tag_title("",false).' '.$sep.' '.get_bloginfo('name').'</title>'."\r\n";
      // формируем description из имени тега и 3х первых заголовков публикаций
        echo '<meta name="description" content="Страница тега - '.single_tag_title("",false).'. '.$tagtitle[0].' '.$tagtitle[1].' '.$tagtitle[2].'" />'."\r\n";
      // формируем keywords из дополнительных тегов статей страницы тега, всего 9 ключей
        if($keyptag){
            arsort($keyptag);
            $arrcatkey=array_slice(array_keys($keyptag), 0, $kolcatkey);
            $cattags=implode(', ',$arrcatkey);
        echo '<meta name="keywords" content="'.$cattags.'" />'."\r\n";
        }
  // если это страница архива блога по году, запрещаем индексацию поисковиками исключая дубли
    } elseif(is_year()) {
      echo '<title>Архив блога за '.get_the_time("Yг.").' '.$sep.' '.get_bloginfo('name').'</title>'."\r\n";
      echo '<meta name="robots" content="noindex, nofollow" />'."\r\n";
  // если это страница архива блога по месяцу, запрещаем индексацию поисковиками исключая дубли
    } elseif(is_month()) {
      echo '<title>Архив блога за '.get_the_time("F Yг.").' '.$sep.' '.get_bloginfo('name').'</title>'."\r\n";
      echo '<meta name="robots" content="noindex, nofollow" />'."\r\n";
  // если это страница архива блога по дате, запрещаем индексацию поисковиками исключая дубли
    } elseif(is_day()) {
      echo '<title>Архив блога за '.get_the_time("j F Yг.").' '.$sep.' '.get_bloginfo('name').'</title>'."\r\n";
      echo '<meta name="robots" content="noindex, nofollow" />'."\r\n";
  // если это поиска,  запрещаем индексацию поисковиками чтобы исключить дубли
    } elseif(is_search()) {
      echo '<title>Результаты поиска по запросу - '.get_search_query().' '.$sep.' '.get_bloginfo('name').'</title>'."\r\n";
      echo '<meta name="robots" content="noindex, nofollow" />'."\r\n";
  // если это страница 404,  запрещаем индексацию поисковиками чтобы исключить дубли
    } elseif(is_404()) {
      echo '<title>Ошибка 404, страница не найдена '.$sep.' '.get_bloginfo('name').'</title>'."\r\n";
      echo '<meta name="robots" content="noindex, nofollow" />'."\r\n";
  // если это статическая страница или публикация
    } elseif(is_single() || is_page()) {
      global $post;
      // формируем title из названия текущей статьи и названия блога
         echo '<title>'.wp_title($sep,false,'right').get_bloginfo('name').'</title>'."\r\n";
         $descr=get_post_meta($post->ID, "description", true);
        if($descr){
      // формируем description из Произвольного поля публикации
        echo '<meta name="description" content="'.$descr.'" />'."\r\n";
        }else{
      // формируем description из первых 20 слов статьи
            $textdes=explode(' ',preg_replace("/\[(.*?)\]|\r|\n/","",strip_tags($post->post_content)));
            $descr=implode(' ',array_slice($textdes, 0, $koldesk));
        echo '<meta name="description" content="'.$descr.'" />'."\r\n";
        }
        $keywrd=get_post_meta($post->ID, "keywords", true);
        if($keywrd){
      // формируем keywords из Произвольного поля публикации
        echo '<meta name="keywords" content="'.$keywrd.'" />'."\r\n";
        }else{
      // формируем keywords из тегов публикации
           $keytag=wp_get_post_tags($post->ID, array('orderby' => 'count', 'order' => 'DESC'));
           if($keytag) foreach ((array) $keytag as $keywrdtg){$keyartg[]=$keywrdtg->name;}
           if($keyartg) {
             $keywrd=implode(', ',$keyartg);
             echo '<meta name="keywords" content="'.$keywrd.'" />'."\r\n";
           }
        }
    }
}

Сохраняем внесённые в «functions.php» изменения и открываем «header.php», здесь нам нужно проверить наличие:

<meta name="description" content=... и <meta name="keywords" content=...

Если есть удаляем.

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

Если же вам нужно просто выводить мета-теги с описанием и ключевыми словами указанными в произвольных полях на страничках записей. А для главной и рубрик использовать просто описание вашего ресурса то можно пойти более простым путём.

А именно, так же создаём произвольные поля с необходимым названием и содержимым, далее уже без каких либо изменений в: functions.php, сразу открываем: header.php и изменяем уже упомянутые функции вывода: «title», «description» и «keywords», на следующее:

<title><?php if (is_home () ) { bloginfo('name'); } elseif ( is_category() ) { single_cat_title(); if(get_bloginfo('name') != "") echo ' - ' ; bloginfo('name'); }
 elseif (is_single() ) { single_post_title(); }
 elseif (is_page() ) { bloginfo('name'); if(get_bloginfo('name') != "") echo ': '; single_post_title(); }
 else { wp_title('',true); } ?></title>
<?php if (is_single() || (is_page())){ ?>
<meta name="description" content="<?php echo get_post_meta($post->ID, 'description', true); ?>" />
<meta name="keywords" content="<?php echo get_post_meta($post->ID, 'keywords', true); ?>" />
<?php 
} else { ?>
<meta name="description" content="Описание для главной" />
<meta name="keywords" content="Ключевые слова для главной" />
<?php } ?>

Далее если имеется на блоге какой либо упомянутый сео — плагин, для начала де-активируем его и уже можно проверить результат работы кода.

Открываем исходный код какого либо поста и смотрим наличие мета тегов с содержимым наших произвольных полей.

О втором похожем коде, но имеющим уже чуть больше возможностей я расскажу в одной из следующих статей, подпишитесь на обновления, чтобы не пропустить. Так же при помощи: «All in One SEO» на abrek-ad-abra.ru была организована генерация карты блога sitemap.xml, поэтому временно мне пришлось возложить эту почётную обязанность на плагин: «Google XML Sitemaps», как это сделать читайте здесь а на сегодня я с вами прощаюсь желаю удачи и до новых встреч!

С уважением, автор блога!
© progress-project
★Обновлено:2016-05-21

Введите свой e-mail:

Вы можете поделиться статьёй в социальных сетях:

Комментарии к статье

4 комментарияна “СЕО — оптимизация своими руками или альтернатива SEO плагинам”
  1. VITALY:

    Превосходно! Я сам оптимизировал свой блог вроде все получилось.

    Ответить
    • Administrator:

      VITALY, вы оптимизировали свой блог с помощью плагина: SEO by Yoast, в статье же идёт речь о том, как это можно сделать, без применения какого либо SEO-плагина.

      Ответить
  2. Сергей:

    Поисковая оптимизайция это SEO, у вас же через раз встречается СЕО (англ. Chief Executive Officer — главный исполнительный директор.

    Как оптимизировать главного исполнительного директора своими руками )))

    Ответить
    • Administrator:

      Сергей Вы ведь производите впечатление образованного человека, посмотрите смогли найти в gpedia.com расшифровку значения СЕО, как главный исполнительный директор. Поищите ещё и Вы обязательно наткнётесь на информацию о поисковых запросах, ключевых словах и их плотности, а заодно и словосочетание: Search Engine Optimization, что и переводится, как Поисковая Оптимизация.

      Ответить

Ваш комментарий

Внимание! Перед тем, как вставить в комментарий: html, php либо JavaScript, преобразуйте его в HTML сущность!

» Подписаться на комментарии по RSS
Поиск по блогу

Введите свой e-mail:

ВКонтакте Google+ Facebook RSS-лента сайта abrek-ad-abra.ru

Топ комментаторов

Виктор(6)
seoonly.ru(4)
Иван(3)
Олег(3)
Николай(3)

© 2015-2017

SEO-Бизнес блог «Progress-project».

Все материалы, опубликованные на сайте: принадлежат автору и охраняются в соответствии с законодательством РФ.

При использовании материалов сайта гиперссылка на обязательна!



seo-блог