Однажды к нам обратился владелец одного интернет-магазина, собранного на очень популярной сейчас связке WordPress + WooCommerce, с просьбой подсказать, что не так с его сайтом. Анализ сайта и его кода выявил неожиданно много чисто технических проблем, заложенных еще при его создании. Некоторые из них вполне могут быть общими и для других сайтов. Ниже описаны наиболее впечатляющие подробности этой истории без указания адреса сайта и названия компании по причинам, которые станут понятны после ее  прочтения.

Для оформления сайта была использована профессиональная тема без дочерней темы в качестве прослойки

Само по себе это не так страшно, однако обычно так не делают из-за того, что при обновлении темы, а обновления профессиональных тем нередко выпускаются достаточно регулярно, пропадут все внесенные в нее изменения. Поэтому в сайтах на WordPress в случае использования готовых тем оформления почти всегда создается в качестве прослойки тема-наследник, она же дочерняя тема (Child Theme), наследующая все свойства выбранной базовой темы. В нее и вносятся необходимые изменения для настройки внешнего вида сайта и его функционала. При этом базовую тему можно безопасно обновлять без риска потери внесенных изменений, сохраненных в дочерней теме, сделанной активной по-умолчанию.

Но и это было еще не все. Для обновления профессиональной темы, приобретаемой обычно на специальных сайтах (например, ThemeForest), требуется доступ в аккаунт покупателя, с использованием которого эта тема была куплена. Такого доступа у владельца сайта не оказалось, как и возможности запросить у создателей сайта эти обновления, а значит и не было возможности обновить тему должным образом. Со временем этот факт будет становится все более и более критичным, потому что профессиональная тема содержала в себе несколько десятков файлов-шаблонов, переопределяющих шаблоны из плагина магазина WooCommerce.

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

Попутно выяснилось, что тема приводит к фатальной ошибке на сайте при переключении его на работу с PHP 5.6 на PHP 7 – последней на текущей момент базовой версии скриптового языка PHP, на котором написан движок сайта. Ошибку удалось локализовать и исправить, так что сайт в конечном итоге был переведен на PHP 7.

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

Добровольный отказ от SEO разработчиками сайта

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

Разумеется, подобное программистское «решение» потребовало немедленного исправления: в нужное место шаблона была добавлена функция WordPress, выводящая необходимое описание, а также был установлен и минимально настроен плагин Yoast SEO, позволяющий очень гибко управлять как заголовками, так и содержимым сниппетов поисковой выдачи.

Помимо этого на сайте нашлось несколько мест помимо заголовка страницы, в которых использовался тег h1, все эти моменты были исправлены.

На сайте не использовалось кэширование

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

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

Это были заполненные страницы из разделов портфолио, отзывы несуществующих клиентов, страницы членов команды и прочие демо-записи. Все эти материалы разбавляли контент сайта бессмысленным мусором и подлежали удалению.

Прочие улучшения сайта

Для улучшения магазина также было проделано следующее:

  1. Созданы и заполнены недостающие страницы «О нас»,  «Оплата» и «Доставка» с описаниями процедур оплаты и доставки соответственно, создана новая контактная форма для страницы «Контактов», туда же добавлены фото здания с офисом и карта с меткой расположения.
  2. Пустовавшие ранее виджеты в подвале сайта были заполнены полезным контентом и соответственно оформлены.
  3. Отключены около десятка не используемых плагинов.
  4. Сняты ограничения на длину заголовков товаров, выводимых на страницах категорий.
  5. В настройках сайта увеличен лимит памяти, выделяемый для работы скриптов, до 256МБ.
  6. Переведены на русский выскакивающие в различных местах надписи на английском языке.
  7. Контент на главной скомпонован в более понятном и привлекательном виде.

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