Переброс сайта с NetCat на WordPress и снижение показателя отказов

Совсем недавно задался целью перебросить сайт Appleoid.ru, который был на движке NetCat на WordPress. В посте я расскажу, как я это сделал без потери структуры, контента и освещу всю техническую сторону этой хитрой манипуляции.
В статье будут освещены такие вещи:

  • Как перебросить сайт с NetCat на WordPress
  • Как сохранить структуру
  • Сохранение функционала, использование нужных плагинов
  • Снижение показателя отказов с 67,2 % до 4,68 %

Статья будет полезна не только тем, кто хочет переехать с NetCat, но и тем, кто уже работает с WordPress.

Ну что, поехали!

Почему я решил отказаться от NetCat

Начну с предыстории. Как некоторые знают, я участвую в конкурсе “Новостной сайт за 3 месяца” с проектом AppleOID.ru . Мой конкурсный проект – это некое противостояние мобильных платформ iOS и Android в формате новостного социального сайта. Так вот, спонсоры конкурса раздавали бесплатные лицензии на движок NetCat Community. Кто не любит халяву? Конечно же, я подал заявочку и получил заветный движок. Я отчётливо себе представлял, что движок новый, мне не знакомый, то есть придётся заморочиться, чтобы соорудить приличный сайт.

Если не считать дизайн, то на настройку и создание нужного мне функционала было потрачено более 10 тысяч рублей. Сюда входило:

  • Вёрстка (2 раза)
  • Натяжка и адаптация вёрстки
  • Настройка сайта
  • Дополнительный функционал
  • Решение проблем после предыдущих действий

Над всем этим работало 5 человек, не считая меня, в основном по очереди. После всего этого, с точностью могу сказать, что хороших специалистов по NetCat очень мало и они мне не попадались. Были и, якобы, крутые спецы, но, цены были бешенные (от 30 000 рублей).

За эти 2 месяца использования NetCat я повысил уровень владения им с 0 до 4 (из 10), на мой взгляд. То есть, я практически свободно передвигаюсь по админке, знаю где-что находится, как делать правки, как подключать модули и т.д. Это мне позволило сэкономить некоторое количество денежных средств, но увеличило время и потрепало нервы. Скажу честно, за 2 месяца я не смог реализовать и 70 % того функционала, что хотел.

Расскажу о том, что конкретно мне не понравилось в NetCat, собственно почему я решил его заменить на WordPress.

Мой проект предполагает немного необычную структуру: разделение материалов по iOS и Android. То есть: разные категории, разные стили и цвета, разное положение анонсов материалов и т.д. Для реализации такой структуры в NetCat нужно было создать 2 компонента, отвечающих за разные материалы. Казалось бы, что это не должно чему-либо мешать. Но, проблемы появляются тогда, когда надо: выводить последние комментарии, организовывать поиск по сайту, выводить последние посты из разных категорий и т.д. Во-первых: приходится всё делать не для 1 компонента, а для 2-х. Во-вторых: очень легко запутаться.

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

  1. В админке нет уведомлений о поступлении новой статьи
  2. Из админки нельзя узнать опубликована статья или находится в стадии рассмотрения. Для того, чтобы узнать, надо открыть статью и посмотреть есть ли галка “Включена” или нет
  3. Форма публикации не поддаётся редактированию. Так и не удалось натянуть на неё дизайн. Также в визуальном редакторе нет кнопки “загрузить изображение”:
  4. свойства изображений

    Авторам приходилось присылать изображения на почту, а я уже вручную загружал на ФТП и размещал в статьях.

  5. При не заполнении какого-либо поля и отправке статьи на модерацию – нет никаких уведомлений, статья не отправляется на самом деле.
  6. Очень ужасный функционал для групп пользователей. Если даём права на админку и публикацию материалов без модерации группе “Авторы”, то эти права не работают. Приходится просить программистов, чтобы сделали. Я так и не понял, почему установка прав не работает и почему нужно предпринимать какие-то дополнительные действия
  7. Организация поиска – ужасная штука. Для того, чтобы материалы искались, нужно их индексировать внутри сайта. Для этого нужно настраивать крон и произвести кучу действий. Когда у меня не получилось это сделать, написал в саппорт. Сказали обновить движок. Но, тут ещё одна проблема – он автоматически не обновляется (точнее выдаёт ошибки), сказали вручную. Бред
  8. Сложная структура админки. Для освоения её нужно потратить кучу времени. Т.к. NetCat – это конструктор, то самые простые вещи в нём сделаны супер сложно
  9. Куча мелких настроек. К примеру, у меня после каждого абзаца вставлялась пустая строка в статьях. Кто же знал, что надо убрать переключатель “перенос строки — <BR>”
  10. <br>

  11. Мануал по настройке системы – очень старый, нет половины того, что нужно
  12. Очень сложно настроить RSS ленты для нужных рубрик, да и вообще, хотя бы 1. Для этого нужно писать скрипты и перекопать пол админки
  13. Дизайн сайта разбросан на большое количество огрызков: макеты, компоненты, системные таблицы и т.д. К примеру, мой дизайн разбросан на 27 частей (вроде бы, может и больше). Причём, чтобы найти нужный, необходимо рыться во всём. Нужные мне части, компоненты – никак не помечены, нельзя вывести только те, что принадлежат к моему дизайну
  14. Сложно подключать модули. Как и с дизайном, нужно много чего перекопать
  15. Раздражающая обработка кода. Нужно перед двойными кавычками ставить обратный слеш или заменять на одинарные кавычки. Конечно, есть автозамена, но всё равно – зачем так усложнять?
  16. Конфликт функционала. К примеру, поставив модуль голосования, не работала регистрация на сайте, причём не понятно почему

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

Мне не удалось реализовать:

  • Рейтинг статей
  • Рейтинг авторов на основе рейтинга их статей
  • Личный кабинет (получился очень глючный)
  • Не глючный поиск по сайту
  • Нормальную карту сайта XML
  • Постраничную навигацию
  • Нормальную загрузку изображений
  • Нормальную авторизацию через социальные сети
  • Похожие материалы (под статьёй)
  • Нормальные RSS ленты (статьи приходили в ленту с задержкой, порой 3-4 часа)
  • Интегрировать сайт с форумом на IBP
  • Ну и много всяких мелочей

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

Замена NetCat на WordPress

Почему WordPress?

  • Просто
  • Надёжно
  • Легко подключать дополнительный функционал
  • Лёгкая настройка и адаптация шаблона
  • Не глючит
  • Куча плагинов
  • Куча форумов и статей по движку
  • Доп функционал или специалист обходится не так дорого

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

Делаем шаблон для WordPress

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

Перво-наперво нужно иметь готовую вёрстку вашего макета. На этом останавливаться не буду. Скажу сразу, если у вас нет простой html вёрстки макета, а есть только уже адаптированный шаблон в NetCat, то перекинуть его будет сложновато. Хотя бы потому, что он разбросан по куче компонентов и сложно выдирать функции.

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

  • Хедер (верхняя часть сайта, которая не меняется: мета-данные, шапка) — header.php
  • Сайдбары — left_sidebar.php , right_sidebar.php
  • Центральная часть с контентом для главной страницы (анонсы статей) – index.php
  • Центральная часть для внутренней страницы (сама статья) – single.php
  • Футер (нижняя часть сайта, которая не меняется) – footer.php

Остальные части, я думаю, вы сможете распознать сами: категории, страница результатов поиска, комментарии, статическая страница и т.д. В большинстве случаев, они все похожи (по структуре, шаблону) и отличаются лишь разным функционалом.

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

< ?php bloginfo('name'); ?>< ?php wp_title(); ?> - вывод титла
< ?php get_header(); ?> - получение хедера (к примеру, для index.php)
< ?php wp_pagenavi(); ?> - вывод постраничной навигации
< ?php get_footer(); ?> получение футера
< ?php comments_template( '', true ); ?> - подключение шаблона комментариев

Следует сразу взять на вооружение, что все функции, касающиеся вывода конкретного поста или исходящего из него функционала должны находиться внутри цикла Loop, который выглядит так (последовательно):

<?php if(have_posts()) : ?><?php while(have_posts()) : the_post(); ?> - получение поста
Внутренние функции поста
<?php endwhile; ?><?php else : ?><?php _e('Не найдено'); ?><?php endif; ?> - конец цикла

Если вы запомните эту последовательность, то всё остальное будет легче восприниматься. Примеры функций, относящиеся к посту:

<?php the_category(', '); ?> - название категории поста
<?php the_title(); ?> - заголовок поста, титл
<?php the_content(); ?> - контент поста
<?php the_time(__('d M Y')); ?> - дата поста
<?php the_tags('Метки: ', ', ', ''); ?> - метки
<?php previous_post_link('&laquo; %link') ?> - ссылка на предыдущий пост (по дате)

В кодексе WordPress можно найти все нужные функции и посмотреть примеры использования. Там всё разжёвано.

После простановки всех нужных функций в наш шаблон, он должен уже работать как надо (при условии, что вы его активировали в админке). Далее будем подключать и настраивать нужный функционал, которого нет в стандарте.

Настройка WordPress и нужные плагины

Не буду останавливаться на стандартной настройке WP, там и так всё понятно.

Перво-наперво нужно сохранить структуру сайта, то есть URL категорий и статей. Задача не такая сложная, но повозиться пришлось.

Структура URL у меня была такая:

Сайт —> Рубрика —> Подрубрика —> статья.html

Пример:

http://www.appleoid.ru/ios/news/novosti-ios_362.html

Рубрик у меня было 2:

  1. iOS
  2. Android

Подрубрик 4:

  1. Новости
  2. Обзоры
  3. Игры
  4. Программы

Для начала, используем плагин RusToLat для ЧПУ. Затем указываем в разделе “Постоянные ссылки” общий вид URL, у меня получился такой:

/%category%/%postname%.html

Т.к. префикса для рубрик у меня нет, то укажу префикс для меток – tags

Чтобы всё автоматически сработало, нужно поставить права 777 на .htaccess в корне, сохраняем.

Теперь приступим к созданию рубрик. Так как структура была: Рубрика -> Подрубрика -> статья.html, то нам необходимы 2 основные рубрики: ios и android, указываем их в поле “ярлык” (он попадает в URL на место “Рубрика”). Затем, в каждой рубрике создаём подрубрику, в моём случае ярлыки:

  • News
  • Reviews
  • Games
  • Soft

Вот тут-то и возникает проблема т.к. вордпресс запрещает одинаковые ярлыки. То есть нельзя создать подрубрику “Новости” (ярлык: news) для рубрик ios и android потому, что wordpress не понимает, что это разные вещи. К ярлыку у него завязан идентификатор рубрики. Поэтому, пока указываем любые ярлыки и создаём все нужные рубрики.

Для решения этой проблемы необходимо зайти в БД, в phpMyAdmin. Находим свою базу. Таблица, отвечающая за рубрики (а также метки) — wp_terms. Поле, отвечающее за ярлык (URL) – slug. Т.к. по-умолчанию slug является уникальным полем (нельзя делать 2 рубрики с одинаковым slug, ярлыком), то нам нужно сделать его не уникальным. Для этого переходим в структуру, далее – индексы. Жмём на карандаш и изменяем значение с UNIQUE на INDEX:
slug
Сохраняем. Далее проще всего изменить ярлыки у рубрик прямо в БД. Переходим в обзор и правим ярлыки slug так как нужно. У меня получилось так:
БД
Почти всё…

Есть ещё одна проблемка. WordPress по-умолчанию в URL вставляет слово “category”, нам надо от него избавиться. Для этого устанавливаем плагин “WP No Category Base”. Всё, готово, поздравляю! =) Теперь структура сайта сохранится при перебросе на WP.

Стиль постов. Так как дизайн для постов из рубрики iOS синий, а Android – зелёный, то необходимо сделать условие, которое позволило бы применять разные стили.

Логика такая: если пост из категории 1, 2, 3, 4, то применяем первый стиль, иначе применяем второй стиль.

То есть:

  1. Начало цикла Loop
  2. Условие если
  3. Стиль первый
  4. Иначе
  5. Стиль второй
  6. Конец условия
  7. Конец цикла Loop

В коде так:

<?php if(have_posts()) : ?><?php while(have_posts()) : the_post(); ?>
<?php if  ((in_category('8')) or (in_category('9')) or (in_category('11')) or (in_category('13'))){ ?>
Стиль первый
<?php } else { ?>
Стиль второй
<?php } ?>
<?php endwhile; ?><?php else : ?><?php _e('Не найдено'); ?><?php endif; ?>

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

Далее – сайдбары у меня такие:

  • Обзоры ios
  • Новости ios
  • Обзоры Android
  • Новости Android

В них у меня последние материалы из разных категорий. Для вывода последних постов из конкретной категории используем функцию:

<?php $recent = new WP_Query("cat=9&showposts=5"); while($recent->have_posts()) : $recent->the_post();?> (9 – категория, 5 – количество постов)
Функции поста (заголовок, картинка)
<?php endwhile; ?>

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

Открываем functions.php и вставляем код:

function catch_that_image() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=['"]([^'"]+)['"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];
if (!empty($first_img)) $size = getimagesize($first_img);
$imageWidth = $size[0];
if ($imageWidth > 170) $imageWidth = 170;
$post_title = $post->post_title;
$post_title = str_replace('"', ''', $post_title);
if(empty($first_img)) {
return '';
} else {
if ($imageWidth > 80) return '<img src="'.$first_img.'" width="'.$imageWidth.'" alt="'.$post_title.'" class="alignleft" /> ';
}
}

Это функция позволяет выводить уменьшенную копию (в данном случае максимальная ширина 170) первого изображения из поста. Вставка изображения в код такая:

<?php echo catch_that_image(); ?>

Вставляем в нужно место и готово! =)

Следующая проблема – в анонсах постов в центральной части сайта выводится контент, содержащий ту же картинку (если она до тега more). Задача: выводить в анонсе только текст, к тому же определённого размера. В WordPress существует стандартная функция, но, начитавшись всяких статей, пришёл к мнению, что она сильно нагружает систему. Нашёл альтернативу. В том же functions.php вставляем код:

function kama_excerpt($args=''){
global $post;
parse_str($args, $i);
$maxchar 	 = isset($i['maxchar']) ?  (int)trim($i['maxchar'])		: 200;
$text 		 = isset($i['text']) ? 			trim($i['text'])		: '';
$save_format = isset($i['save_format']) ?	trim($i['save_format'])			: false;
$echo		 = isset($i['echo']) ? 			false		 			: true;

if (!$text){
$out = $post->post_excerpt ? $post->post_excerpt : $post->post_content;
$out = preg_replace ("![/?.*]!U", '', $out ); //убираем шоткоды, например:[singlepic id=3]
// для тега <!--more-->
if( !$post->post_excerpt && strpos($post->post_content, '<!--more-->') ){
preg_match ('/(.*)<!--more-->/s', $out, $match);
$out = str_replace("r", '', trim($match[1], "n"));
$out = preg_replace( "!nn+!s", "</p><p>", $out );
$out = "<p>". str_replace( "n", "<br />", $out ) ."</p>";
if ($echo)
return print $out;
return $out;
}
}
$out = $text.$out;
if (!$post->post_excerpt)
$out = strip_tags($out, $save_format);
if ( iconv_strlen($out, 'utf-8') > $maxchar ){
$out = iconv_substr( $out, 0, $maxchar, 'utf-8' );
$out = preg_replace('@(.*)s[^s]*$@s', '\1 ...', $out); //убираем последнее слово, ибо оно в 99% случаев неполное
}
if($save_format){
$out = str_replace( "r", '', $out );
$out = preg_replace( "!nn+!", "</p><p>", $out );
$out = "<p>". str_replace ( "n", "<br />", trim($out) ) ."</p>";
}
if($echo) return print $out;
return $out;
}
  • maxchar = количество символов.
  • text = какой текст обрезать (по умолчанию берется excerpt поста, если его нету, то content, если есть тег <!—more—>, то maxchar игнорируется и берется все, что до него, с сохранением HTML тегов )
  • save_format = Сохранять перенос строк или нет. По умолчанию сохраняется. Если в параметр указать определенные теги, то они НЕ будут вырезаться из обрезанного текста (пример: save_format=<strong><a> )
  • echo = выводить на экран или возвращать (return) для обработки.
  • П.с. Шоткоды вырезаются. Минимальное значение maxchar может быть 22.

Далее, для вывода анонса контента используем код:

<?php kama_excerpt( '' ); ?> (вместо <?php the_content(); ?>)

Проблема решена.

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

Комментарии я подключил Disqus, но чувствую, что это временно (по ряду причин). Однако, считаю Disqus прекрасным решением для комментариев. Большой функционал и гибкая настройка. Кстати, если ставить плагин Disqus в WordPress, то дополнительных кодов вывода комментариев не требуется. Они выводятся,  если на странице есть функция

<?php comments_template( '', true ); ?>

Стандартные комментарии заменяются автоматически.

Рейтинг статей и рейтинг авторов.

После каждой статьи у меня стоит вот такой блок автора:
блок автора
Определяем задачи:

  1. Вывести аватарку
  2. Вывести ник
  3. Вывести количество комментариев
  4. Сделать рейтинг материала (поста)
  5. Сделать рейтинг автора на основе рейтингов его статей. И вывести его

Скажу сразу, есть несколько стандартных функций, которые вроде как выводят аватар, ник и количество постов. Но, я с некоторыми из них испытывал проблемы. Поэтому, вот рабочие функции, которые 100 % выводят то, что нужно, вне зависимости от плагинов:

<a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ) ); ?>"> - ссылка на страницу автора
<?php the_author(); ?> - ник автора
<?php the_author_posts(); ?> - количество постов автора
<?php echo get_avatar( get_the_author_meta( 'user_email' ), apply_filters( 'twentyten_author_bio_avatar_size', 60 ) ); ?> - вывод аватарки (60 - размер)

Для загрузки аватаров можно использовать любой плагин, без разницы, я юзал Simple Local Avatars. Остаётся рейтинг статьи и рейтинг автора. Использовал 2 плагина:

  1. WP-PostRatings – рейтинг статей
  2. CubePoints – рейтинг пользователей

Что первый, что второй настроить не составит труда. Функции вывода:

<?php if(function_exists('the_ratings')) { the_ratings(); } ?> - вывод рейтинга статьи
<?php if(function_exists('cp_displayPoints')){ cp_displayPoints(); } ?> - рейтинг автора

Во втором плагине (рейтинг пользователя) система мне понравилась. Рейтинг может составляться из:

  • Бонус за регистрацию на сайте
  • Баллы за ежедневное посещение сайта
  • Баллы за комментирование
  • Баллы за модерацию комментариев
  • Баллы за количество постов (новый пост + балл)

Очень гибкий и настраиваемый плагин. Проблемка у нас осталась лишь одна, как эти плагины связать (рейтинг статей и автора), чтобы баллы начислялись за рейтинг статей автора.

Выход такой: открываем файл wp-postratings.php, который у нас в папке с плагином рейтинга статей. Находим строчку:

rate_log = $wpdb->query("INSERT INTO $wpdb->ratings

После неё вставляем:

$post = get_post($post_id);
$author_id = $post->post_author;
$sql = "INSERT INTO `{$wpdb->prefix}cubepoints` VALUES (0,
$author_id, 'rating_post', $post_id, ".$ratings_value[$rate-1].",
".current_time('timestamp').")";
$wpdb->query($sql);
$cpoints = get_user_meta($author_id, 'cpoints', true);
$cpoints += $ratings_value[$rate-1];
$a = update_user_meta($author_id, 'cpoints', $cpoints);

Готово. Теперь плагины связаны и автор получает баллы за рейтинг его статей. Подробнее можно почтить вот тут.

Далее мне захотелось, чтобы в центральной части сайта, в анонсах постов была иконка категории, чтобы легко идентифицировать пост. Сразу покажу результат:
Иконки категорий
Сначала захотел попробовать сделать это без плагинов. Но, после пары часов стараний у меня не получилось почти ничего. Затем перепробовал несколько плагинов, в итоге 100 % под мои нужны подошёл лишь один — Category Icons Lite. Иконки я нарисовал (вроде даже симпатичные), оставалось применить их к каждой рубрике. Для этого лезем в админку -> библиотека файлов и добавляем иконки. После добавления, указываем ей категорию как на скрине:
добавление иконки
После того как загрузим всё, нужно выводить эти иконки. Плагин немного глючит при выводе, иногда выводит по 2 иконки рядом. Чтобы от этого избавиться открываем файл плагина caticonslite.php , находим снизу код:

function reset_flags($content='') {
$this->permalink = 1;
$this->the_title = 1;
return $content;
}

Вместо 1 ставим 0.

Осталось вывести иконку, для этого используем в шаблоне функцию:

<?php if (function_exists('get_cat_icon_lite')) echo get_cat_icon_lite();?>

Получилось красиво вроде.

Голосовалка.

В шапке у меня вот такая штуковина:
голосовалка
Это не плагин, а самописный скрипт. Так что обозревать его не буду. Могу лишь сказать, что повозиться пришлось тоже не мало, но спасибо Вите за помощь =)

Проблема была в том, что скрипт писали для NetCat и он врос в него корнями. Чтобы перебросить на WordPress пришлось часть переписать. Результаты голосования пишутся в БД вордпресса, так что я могу ими манипулировать в дальнейшем.

Ну что, с технической стороны вроде бы всё осветил. Перечислю все плагины, которые у меня стоят:

  1. All in One SEO Pack — seo плагин, ставить всем!
  2. Blubrry PowerPress — организация подкастов на WordPress
  3. Category Icons Lite — иконки категорий
  4. CubePoints — рейтинг пользователей
  5. Disqus Comment System — комментарии
  6. FeedBurner FeedSmith Extend — настройка лент RSS
  7. Fix Rss Feeds — исправление ошибок RSS
  8. Google XML Sitemaps — построение XML карты сайта
  9. Lightbox 3 — кликабельные изображения (увеличение с эффектами)
  10. post-views — отслеживание просмотров постов
  11. RusToLat — ЧПУ
  12. Simple Local Avatars — аватарки
  13. WP-Click-Tracker — отслеживание кликов в постах
  14. WP-Pagenavi — постраничная навигация
  15. WP-PostRatings — рейтинг постов
  16. WP No Category Base — убираем «category» из URL
  17. Yet Another Related Posts Plugin — похожие посты

Если что-то не осветил, то значит либо там совсем просто, либо не столь важно.

Перекидываем контент

290 статей – не так много. Решил не заказывать парсер и перекинуть статьи в ручную. Перекидывали с другом вдвоём, в общей сложности управились за день (часов 10).

Примерное время на одну статью:

  • Новость = 2 минуты
  • Обзор = 4-5 минут

Тут в общем то вопросов возникнуть не должно, единственное – URL статьи. Его мы забивали в ручную. Забить URL можно после того, как сохранить пост в черновики (лишь тогда появляется поле URL).
поле URL
После всех телодвижений, просто удаляем NetCat и копируем уже готовый WordPress.
На этом перенос завершён. Если что-то упустил – пишите в комментариях, допишу и обновлю статью.

Последствия после переброса. Показатель отказов

Теперь самое вкусное. Переброс сайта с NetCat в WordPress позволил мне понизить показатель отказов и повысить некоторые другие характеристики. Чтобы не быть голословным, продемонстрирую. Переброс сайта я закончил рано утром (около 3-4 часов утра) 2 июля 2011 года. Следовательно, от этой даты и отталкиваемся.

Что такое показатель отказов?

Показатель отказов — это процент посещений сайта, во время которых было просмотрено не более одной страницы или при которых посетитель покинул сайт со страницы входа (целевой страницы). Этот показатель позволяет определить качество посещения — высокое значение показателя отказов показывает, что страницы входа не соответствуют ожиданиям посетителей.

Показатель отказов за неделю:
показатель отказов за неделю
На мой взгляд – потрясающий график, который можно распечатать на ватмане и повесить на стену, вместо картины Пикассо =)

Скажу честно, максимум, что я мог ранее добиться (за всю жизнь) это 24 % показатель отказов. Можно думать, что у меня отвалился какой-то источник трафика (высокоотказый), однако, это не так, трафик сохранился:
Обзор посетителей
Небольшое проседание связано с тем, что новости на NetCat уходили вглубь сайта, тем самым позиции запросов проседали (на NetCat не делал перелинковку и похожие статьи). Сейчас, думаю, когда сайт переиндексируется, поисковый трафик будет расти.

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

  • Похожие статьи
  • Предыдущая и следующая статья

Среднее число просмотров страниц:
Среднее число просмотров страниц
Теперь рассмотрим показатель отказов для каждого источника трафика.

Прямой трафик:
Прямой трафик
Сайты-источники переходов:
Сайты-источники переходов
Поисковые системы:
Поисковые системы
Вот ещё анализ посещаемости страниц, процент выходов:
анализ посещаемости страниц, процент выходов
Такое улучшение характеристик сайта произошло благодаря:

  • Смене движка
  • Перелинковке
  • Проработке элементов (юзабилити, шрифты, размеры, отступы и т.д.)

Эта тема отдельной статьи, которую я скоро напишу. Статья будет посвящена по большей части именно юзабилити и повышению конверсии. Поэтому подписывайтесь на RSS и следуйте за мной в Twitter, чтобы получать уведомления о новых статьях!

Надеюсь, статья была полезна.