Отслеживание кликов по affiliate ссылкам — ключевой аспект для анализа эффективности ваших партнерских кампаний. Многие пользователи обращаются к плагинам для решения этой задачи, но иногда хочется обойтись без дополнительных расширений, чтобы не нагружать сайт и сохранить полный контроль над кодом. В этой статье мы подробно разберем, как реализовать собственное отслеживание кликов по affiliate ссылкам на WordPress с помощью минимального количества кода и без плагинов.
Почему стоит реализовывать отслеживание кликов без плагинов
Плагины могут быть удобными, но они часто приводят к избыточной нагрузке, конфликтам с другими расширениями, а также создают уязвимости. Кроме того, если плагин перестает поддерживаться, вы рискуете потерять важный функционал. Реализация собственной системы отслеживания позволяет:
- Оптимизировать производительность сайта.
- Контролировать, какие данные собираются и как они обрабатываются.
- Гибко настраивать логику без ограничений плагинов.
- Избежать зависимости от сторонних разработчиков.
Давайте рассмотрим конкретный пример реализации.
Реализация отслеживания affiliate кликов: базовый пример
Основная идея — заменить прямые affiliate ссылки на ссылки с вашим доменом, которые ведут на промежуточный скрипт. Этот скрипт фиксирует клик, сохраняет данные и делает редирект на конечный URL партнера.
1. Создание скрипта редиректа и логирования
Создадим файл affiliate-redirect.php в корне сайта или в отдельной папке (например, /affiliate), который будет принимать параметр с идентификатором ссылки и перенаправлять пользователя.
<?php
// wpaffiliate_affiliate-redirect.php
// Подключаем WordPress для использования функций и доступа к базе данных
require_once dirname(__FILE__) . '/wp-load.php';
// Получаем ID ссылки из параметра
$link_id = isset($_GET['id']) ? intval($_GET['id']) : 0;
if ($link_id <= 0) {
wp_die('Неверный ID ссылки');
}
// Получаем URL партнера из базы данных (предположим, что вы храните ссылки в пользовательской таблице wp_affiliate_links)
global $wpdb;
$table_name = $wpdb->prefix . 'affiliate_links';
$affiliate_url = $wpdb->get_var($wpdb->prepare("SELECT url FROM $table_name WHERE id = %d", $link_id));
if (!$affiliate_url) {
wp_die('Ссылка не найдена');
}
// Логируем клик: IP, время, ID ссылки
$wpdb->insert($wpdb->prefix . 'affiliate_clicks', [
'link_id' => $link_id,
'click_time' => current_time('mysql'),
'ip_address' => $_SERVER['REMOTE_ADDR'],
]);
// Редирект на affiliate URL
wp_redirect($affiliate_url);
exit();
?>
В данном примере предполагается, что у вас есть две пользовательские таблицы в базе данных:
wp_affiliate_linksс полямиid(INT),url(VARCHAR) — хранит партнерские ссылки.wp_affiliate_clicksс полямиid(INT, автоинкремент),link_id(INT),click_time(DATETIME),ip_address(VARCHAR) — хранит логи кликов.
2. Создание таблиц в базе данных
Для создания таблиц можно использовать следующий SQL:
CREATE TABLE IF NOT EXISTS wp_affiliate_links (
id INT NOT NULL AUTO_INCREMENT,
url VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS wp_affiliate_clicks (
id INT NOT NULL AUTO_INCREMENT,
link_id INT NOT NULL,
click_time DATETIME NOT NULL,
ip_address VARCHAR(45) NOT NULL,
PRIMARY KEY (id),
INDEX (link_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Таблицы можно добавить через phpMyAdmin или программно при активации темы/плагина.
Генерация affiliate ссылок в шаблонах WordPress
Чтобы выводить ссылки в удобном формате, создадим функцию для генерации URL с редиректом. Например, в functions.php темы добавьте:
function wpaffiliate_generate_affiliate_url($link_id) {
return home_url('/affiliate-redirect.php?id=' . intval($link_id));
}
Используйте эту функцию при выводе ссылок в шаблонах или постах:
<a href="<?php echo esc_url(wpaffiliate_generate_affiliate_url(123)); ?>" target="_blank" rel="nofollow">Перейти к партнеру</a>
Замените 123 на реальный ID из таблицы wp_affiliate_links.
Настройка и расширение функционала
1. Защита от накруток
Чтобы предотвратить накрутку кликов с одного IP, можно добавить проверку в скрипт редиректа, например, разрешать только один клик с одного IP в течение 1 часа:
$last_click = $wpdb->get_var($wpdb->prepare(
"SELECT click_time FROM {$wpdb->prefix}affiliate_clicks WHERE link_id = %d AND ip_address = %s ORDER BY click_time DESC LIMIT 1",
$link_id, $_SERVER['REMOTE_ADDR']
));
if ($last_click) {
$last_click_time = strtotime($last_click);
if (time() - $last_click_time < 3600) {
// Уже был клик менее часа назад, перенаправляем без логирования
wp_redirect($affiliate_url);
exit();
}
}
2. Отображение отчетов по кликам
Для удобства создайте в админке страницу или раздел с отчетом по кликам. Пример простого SQL запроса:
SELECT link_id, COUNT(*) AS clicks_count
FROM wp_affiliate_clicks
GROUP BY link_id
ORDER BY clicks_count DESC;
Вывести результат можно в таблице с помощью стандартных функций WordPress для админки или простым HTML.
3. Использование AJAX для динамического обновления счетчиков
Если нужно показывать счетчики кликов на фронтенде без перезагрузки, можно использовать AJAX-запросы к серверу, который вернет количество кликов по нужной ссылке.
Примеры плагинов с похожим функционалом
Если же вы хотите расширить возможности без самостоятельного кода, обратите внимание на плагины:
- Clearfy Pro — оптимизация сайта и управление функционалом, включая безопасность.
- WPRemark — помогает взаимодействовать с посетителями, можно использовать для кастомных уведомлений по кликам.
Итоги и рекомендации
Создание собственной системы отслеживания affiliate кликов в WordPress без плагинов — реально осуществимая задача, которая позволит вам гибко контролировать партнерские ссылки и аналитику. Главное — обеспечить надежное хранение данных в базе и защиту от накруток.
Используйте предложенный пример в качестве основы, расширяйте и адаптируйте под свои задачи. В дальнейшем можно интегрировать систему с Google Analytics или другими сервисами для более подробного анализа.