Как за 5 минут актуализировать ссылки, цены и промокоды на всех страницах сайта

Сергей Смолин Сергей Смолин
Обновлено:
Время прочтения:  12  мин.
4930
1

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

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

  • Партнёрские программы закрываются или перестают работать через привычные сети. Регулярно приходится создавать новый «хитрый» аккаунт или ещё что колхозить. 
  • Рекламодатели меняют названия или логику работы ссылок. Например, мы рекомендуем отличный бренд по аренде авто. Сейчас это Localrent, а недавно он назывался Myrentacar. Следом после смены адреса сайта все мои ссылки почему-то стали открывать англоязычную версию сайта.
  • Цены на всё растут как на дрожжах. Дорожают даже экскурсии, которые больше десяти лет продавались по фиксированной цене.
  • О сроке жизни акций и промокодов вообще говорить не буду — сами знаете.

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

Как партнёры управляют ссылками, ценами и промокодами?

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

  1. Большинство ответов на вопрос «Как ты управляешь ценами и ссылками на сайте?» можно описать одним коротким русским словом. Оно матерное, так что ограничимся культурным: «мучаюсь». Народ использует стандартную функциональность своих CMS, так что поменять цену по всему сайту — задача на несколько часов. Большинство вообще не обновляют цены и меняют только партнёрские ссылки. Немного некрасиво по отношению к читателям, но довольно логично.
  2. Продвинутые пользователи используют что-то вроде шорткодов в WordPress, но создавать их долго. При этом за пару лет их накапливаются сотни и тысячи. Тогда снова начинаются танцы с бубнами: шорткод точно есть, но найти его — целое приключение.
  3. Лишь несколько человек ответили, что доработали под себя какие-то популярные плагины или пользуются собственными наработками.

Жаль, ведь я надеялся, что есть хороший платный плагин, который можно купить за $100–200 и полностью закрыть этот вопрос. Похоже, что нет — придётся грузить программиста.

Каким должно быть решение для управления информацией, которая часто меняется?

Наверное, где-то есть хорошее коробочное решение под такую задачу. Уверен, что из читающих эту статью кто-то даже пользуется таким. Поделитесь названием, а? Интересно же!

Идея сотворить что-то уникальное захватила мой ум, и сделать с этим я уже ничего не мог. Благо есть знакомый программист, готовый помочь за адекватную оплату. Здесь прямо напрашивается цитата из «Страх и отвращение в Лас-Вегасе» Хантера С. Томпсона, но пришлось её подсократить: «У нас было… [цензура]. Не то, чтобы всё это было категорически необходимо в поездке, но если уж начал собирать коллекцию, то к делу надо подходить серьёзно». Итак:

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

Техническая сторона: скучные данные для тех, кто дружит с кодом

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

  1. Всё построено на базе стандартный функций WordPress. 
  2. На сайте используется старый редактор TinyMCEv4, а не новый Gutenberg (пожелание заказчика). 
  3. Используем editor-style.css, чтобы текст в редакторе выглядел так же, как у читателей.
  4. Все цены и ссылки — это обычные шорткоды WordPress с зашитым ID, по которому и определяется содержимое. 
  5. Для хранения данных использован плагин Custom Post Type с произвольными полями. Всё это визуально отображается прямо в редакторе, чтобы не смущать людей.
  6. Весь код вынесен в отдельный плагин, так как используется одновременно на нескольких сайтах.

Как тысячи шорткодов влияют на скорость загрузки сайта?

Влияет ли такое количество шорткодов на скорость загрузки сайта? Да не особо. Проверьте сами: на нашем сайте Tip-to-Trip.com посмотрите, например, статью об аренде авто в Грузии. В ней я специально все ссылки, цены и таблицы сделал именно через плагин. Сайт расположен на самом обычном недорогом хостинге, но я не вижу никаких тормозов: всё загружается супербыстро как раньше, так и сейчас. 

Программист уверяет, что тестировал скорость работы на 100 000 загруженных в базу тестовых записей, и всё работало достаточно быстро. Сейчас у нас всего чуть больше 900 записей — запас пока есть.

Настроенный визуальный редактор для удобной вёрстки статей

Редактор WordPress «из коробки» не особо визуальный. С одной стороны, он действительно не показывает код, с другой — его нужно немного донастроить, чтобы видеть текст ровно таким, каким он будет на сайте. Сделать это не очень сложно — просто люди обычно не в курсе такой возможности.

Давайте попробую объяснить на наглядном примере. Страница об аренде авто на Кипре в редакторе выглядит так же, как и на сайте. Размеры шрифтов, переносы и высота строк, расположение картинки относительно текста — всё один в один. Как говорится, найдите десять отличий! Можно просто писать и сразу же видеть, как ляжет текст в колонках, как он будет обтекать картинку, не вылезет ли одно короткое слово на последнюю строку и т. д. Вроде мелочь, а очень помогает сконцентрироваться именно на работе.

Настроенный редактор WordPress
Настроенный визуальный редактор

Для сравнения покажу, как это же место будет выглядеть в редакторе без «наворотов»:

Стандартный редактор WordPress

Конечно, и так работать можно, но удобно ли? Написал пару абзацев — нужно срочно жать по кнопке «Предпросмотр» и смотреть, что получилось. Так каждые 5–10 минут, а это отвлекает и забирает уйму времени буквально ни на что.

Если пользуетесь Classic Editor и до сих пор мучаетесь, наймите нормального верстальщика, и он за полчаса настроит редактор примерно как у нас.

Шорткоды для быстрой интеграции партнёрских ссылок

Как я уже говорил, наша система построена на стандартном функционале WordPress. Каждая ссылка — это шорткод, но в нём записан только ID записи, вся информация хранится в базе. 

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

WordPress панель выбора партнёрской ссылки

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

С поиском по шоткодам случился любопытный казус. Изначально они искались только по названию, но эту механику оказалось не так просто объяснить авторам. Поэтому лучше сразу разработать «умный» поиск, чтобы искал и по названию, и по ссылке, и по тексту этой самой ссылки. Всё равно потом придёте к этому решению, но сначала потратите пару месяцев на бессмысленное переучивание всех причастных.

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

База шорткодов с партнёрскими ссылками в WordPress
База партнёрских ссылок

Как авторам проставлять ссылки без доступа к финансам?

Когда авторы и редакторы сами могут проставлять ссылки — это круто. Когда у них есть доступ к десяткам личных кабинетов партнёрок и всем финансовым данным — совсем не так круто. Особенно если авторов у вас много.

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

  1. В поле «Ссылка» нужно вставить обычную, не партнёрскую, ссылку.
  2. В поле ниже заполнить текст.
  3. Дать название ссылке.
  4. Продвинутые могут заполнить поля Class и Style. Например, когда нужно сделать ссылку в виде красивой кнопки или ещё что-то.
Форма создания партнёрской ссылки или цены в WordPress
Форма для создания ссылки

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

Исключения, конечно, бывают. Жаль, но некоторые партнёрские программы создают и хранят уникальные ссылки на своей стороне. Тогда их нельзя получить автоматически — нужно заходить в партнёрский кабинет и создавать ссылки там. Это очень неудобно, но, благо, подобное встречается редко.

6 причин, почему в базе лучше хранить именно обычные ссылки

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

  1. Бренд поменял название? Не беда: за 5 минут можно изменить название на всех страницах сайта.
  2. Хотите перейти с прямой партнёрки на работу через Travelpayouts? Покупаете программисту пачку хорошего кофе, и через 15 минут всё готово.
  3. В партнёрской сети поменялся формат ссылок и новый выглядит лучше? Можно буквально за несколько часов «переехать», переписав несколько строчек кода, а не заменяя ссылки на доброй сотне страниц.
  4. Появились новые возможности? Давайте их использовать! Например, вы не поверите, но у TravelPayouts не всегда были SUB ID — после реализации их нужно было проставить. У рекламодателей постоянно появляются какие-то новые «плюшки» как перевод сайта на нужный вам язык.
  5. Не все авторы создают партнёрские ссылки правильно? Кому-то нужно долго объяснять, что такое SUB ID, другим — что из URL иногда требуется удалять параметры после знака вопроса? Тут всё делается само.
  6. Проверка никогда не была проще! Одно дело проверять статью, в которой уже стоят партнёрские ссылки: её нужно прочитать, перейти по каждой ссылке и убедиться, что автор ничего не напутал. Только ошибки останутся даже после этого. Намного проще открыть страницу со списком недавно созданных шорткодов и посмотреть там все ссылки в обычном виде, которые добавил автор. Так будет быстрее и нагляднее.
  7. Обычные ссылки очень помогают от невнимательности. Раньше я одну-две ссылки на статью забывал сделать партнёрскими: копировал на автомате из браузера. Теперь не сталкиваюсь с этой проблемой.

Валидация данных и подсказки — важнее, чем кажется

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

Проверка партнёрской ссылки в форме WordPress
Проверка партнёрской ссылки в форме

Как избежать создания нескольких однотипных ссылок и цен?

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

Когда авторов больше десятка, всё становится ещё сложнее. Маша никак не может знать, что Владимир только что создал ссылку на условный Booking.com, и ей нужно использовать уже готовую.

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

  1. При создании новой ссылки нужно проверить, нет ли такой же. Если есть — сообщить об этом автору и предложить использовать её.
  2. Существует отдельный интерфейс для редактора, в котором можно посмотреть все одинаковые ссылки и цены с более-менее похожими названиями. Вручную это отследить почти невозможно, а в удобной табличке сразу всё видно. Дальше либо принимаем меры, либо подтверждаем, что не против дублирования.

Почему важно создавать несколько вариантов текста для одной ссылки?

Казалось бы — вот оно решение! Нужно добавить ссылку? Создаём её, при необходимости переиспользуем. 

Мы сначала так и сделали, но довольно быстро натолкнулись на один весомый недостаток такого подхода. Дело в том, что одна и та же ссылка обычно нужна с добрым десятком вариаций текста. Например: «Rentalcars.com», «Rentalcars», «Ренталкарс», «на Ренталкарсе», «забронировать машину лучше здесь» и т. д. Тут возникают две проблемы:

  1. Если у вас большой, ещё и мультиязычный сайт, то скоро в базе появится тысяча ссылок, среди которых искать нужную даже умным поиском не очень удобно.
  2. Авторам обычно лень создавать по 3–5 вариантов ссылки — проще везде ставить только одну, например, Rentalcars.com. Причём неважно, что от этого текст выглядит сухим, а в некоторых местах одно короткое слово вылезает на следующую строку.

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

Выбор написания партнёрской ссылки

Однако здесь важно не переусердствовать. Это сейчас вы везде рекламируете условный Booking.com, Rentalcars или Авиасейлс. Завтра для английской версии сайта вам может потребоваться перейти на партнёрку Skyscanner, а для Азии продвигать вообще что-то третье. Использовать один шорткод для всего не особо разумно. Я советую для каждой новой страны и языка создавать отдельные. Делайте также и во время очередного кризиса скажете себе спасибо.

Как поддерживать актуальные цены на сайте?

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

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

Допустим, вы пишете про экскурсию на Кипре, которая стоит 180 евро. Если экскурсия популярная, её цена может 3–5 раз упоминаться только в подборке экскурсий на Кипре. Если потом вы работаете над материалом об аренде авто, то вам захочется написать: «Экскурсия по этим местам стоит 180 евро. На арендованном авто вы их проедете всего за 60 евро». Это хороший аргумент, ответ на вопрос «почему я должен взять машину?» — человек сразу видит свою выгоду.

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

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

Форма для создания цены

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

Конечно, можно писать без упоминания цены, использовать максимально обтекаемые формулировки или классическое «цену смотрите здесь», но доверие читателей к таким «уклончивым» статьям падает, а с ним и продажи.

Цены и продвинутая математика: зачем такие сложности?

Недостаточно просто добавлять и обновлять цены на страницах сайта — иногда стоит перейти на следующий слой сумрака. 

Например, вы пишете об отличном маршруте по Кипру: рассказали, как и куда проехать, где можно пообедать, что посмотреть. Дальше неплохо было бы указать стоимость поездки. Из чего складывается цена? Ну, допустим, формула такая: [стоимость аренды авто]+[стоимость литра бензина]*[расход малолитражки]*[количество километров]+[цена обеда]+[цена билетов в музеи].

В нашей статье о трансферах в Грузии есть таблица с указанием примерной стоимости путешествия по определённым маршрутам.

Таблица со стоимостью путешествия

Эта таблица делалась до того, как мы дописали решение по управлению ценами. При следующем обновлении я добавлю в блок «Аренда авто» итоговую стоимость, чтобы читатель сразу видел, что по Военно-Грузинской дороге он может проехать:

  • с водителем на малолитражке по цене от $36;
  • с экскурсией за 26 или 145 евро;
  • на арендованном автомобиле по цене от $31.

Самый сок в том, что как только я обновлю стоимость бензина и аренды авто в Тбилиси, итоговая цена тоже пересчитается сразу во всех статьях нашего сайта. Чтобы сделать это вручную, мне бы потребовалось минимум 20–30 часов.

Как работать с динамическими и одноразовыми ценами?

Нужно понимать, что не все читатели мыслят в долларах и евро. Если речь идёт о каких-то национальных валютах, вообще начинается недопонимание. Например, 100 чешских крон это много или мало? А 25 болгарских левов, 30 грузинских лари или 4 000 форинтов? Для большинства туристов эти цифры ничего не значат. Они привыкли всё переводить в «родную» валюту, так что неплохо было бы им в этом немного помочь. Я подсмотрел идею у одного популярного блогера, чуть-чуть её доработал и вот что получилось:

Перевод валюты в тексте

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

Какие ещё тексты стоит хранить в базе?

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

  • Промокоды. Тут всё понятно: промокод на условное такси, кредитную карту или самокат может публиковаться на десятках страниц и действовать всего несколько месяцев. Менять его на новый довольно муторно.
  • Даты. Фразы вроде «в 2022 году», «мы живём на Кипре уже 6 лет» или «последний раз мы прилетали в Бангкок 2 года назад» устаревают быстро. Выискивать и менять их вручную вы 100% не будете. Если сохранить всё это в базе, может когда-то и найдёте время всё быстро обновить.
  • Другие тексты. По большому счёту полно вещей, которые лучше обновлять из единого интерфейса. Время работы достопримечательностей, их выходные, номер маршрутки, которым можно доехать и т. д. Всё это может упоминаться в десятках статей.

Небольшие доработки для комфортной работы с WordPress

Похвастаюсь тремя небольшими доработками WordPress, которые очень поднимают мне настроение и делаются довольно легко. Если вам актуально, напишите в комментариях — я попрошу программиста выслать вам код.

Избавляемся от прокрутки при вставке текста

Если используете классический редактор (Classic Editor) от WordPress, то, наверное, замечали, как при вставке даже небольшого текста прокрутка страницы сбивается. Были в середине, нажали Ctrl+V — ура, вы уже в конце или ближе к началу. Теперь ищи курсор… 

Чем длиннее статья, тем чаще такое будет случаться. Эта проблема не решается ни сменой браузера, ни переходом с Macbook на Windows или Linux (да, я и так заморачивался). Можно, конечно, снять галочку «Включить растягивание редактора по высоте и полноэкранный режим». Помогает, но писать становится не так удобно.

Я мучился четыре года! Приловчился искать курсор при помощи Shift и стрелочки. Стоило сказать о проблеме программисту, и он поправил это за 15 минут. На вопрос «сложно ли было?» сбросил мне 7 строчек кода.

Быстрая публикация и предпросмотр статьи

Мы добавили на верхнюю панель (WordPress admin bar) кнопки «Сохранить» и «Просмотреть». Для этих действий ещё работают банальные Ctrl+S и Ctrl+P. Знаю, что не ахти улучшение на фоне всего вышеописанного, но экономит время на поисках нужной кнопки «Опубликовать».

Запоминаем позицию редактора при сохранении

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

Чёрная пятница: промокоды и повышенные ставки от брендов