Аффилиат-маркетинг — один из самых популярных способов монетизации сайтов. Если вы хотите получить полный контроль над партнерскими ссылками на своем WordPress-сайте и избежать зависимости от сторонних сервисов, имеет смысл создать собственный affiliate плагин. В этой статье мы подробно рассмотрим, как написать такой плагин с нуля, включая отслеживание кликов, сохранение данных и создание удобного интерфейса для управления партнерскими ссылками.
Почему стоит создавать собственный affiliate плагин для WordPress
Готовые решения часто ограничены по функционалу и дизайну, а также могут взимать комиссию или иметь ограничения на количество ссылок. Создавая свой плагин, вы получаете:
- Полный контроль над логикой отслеживания партнерских ссылок.
- Возможность кастомизировать функционал под свои задачи.
- Отсутствие зависимости от сторонних сервисов и комиссий.
- Возможность интеграции с другими частями сайта или CRM.
Это особенно актуально для проектов с большим трафиком и множеством партнерских программ.
Основные функции нашего affiliate плагина
Перед тем как писать код, определим ключевые функции, которые должен выполнять плагин:
- Создание и хранение партнерских ссылок с уникальными идентификаторами.
- Перенаправление пользователей по партнерским ссылкам с сохранением статистики.
- Сбор и отображение статистики кликов и переходов в административной панели.
- Возможность добавления заметок и описаний к каждой партнерской ссылке.
Реализуем эти функции поэтапно.
Структура плагина и создание базы данных
Для хранения данных о партнерских ссылках и их статистике создадим отдельную таблицу в базе данных WordPress. Для этого используем хук register_activation_hook, который запускается при активации плагина.
function wpaffiliate_create_tables() {
global $wpdb;
$table_name = $wpdb->prefix . 'wpaffiliate_links';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
affiliate_id varchar(100) NOT NULL,
url text NOT NULL,
description text,
clicks int DEFAULT 0 NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY affiliate_id (affiliate_id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
register_activation_hook( __FILE__, 'wpaffiliate_create_tables' );Объяснение кода:
affiliate_id— уникальный идентификатор партнерской ссылки, например, «partner123».url— целевой URL, на который будет перенаправлен пользователь.description— описание или заметка для удобства.clicks— счетчик переходов по ссылке.
Таблица создается при активации плагина и готова к использованию.
Добавление партнерских ссылок через административную панель
Чтобы удобно управлять ссылками, создадим меню в админке с формой для добавления и редактирования.
function wpaffiliate_admin_menu() {
add_menu_page(
'Affiliate Links',
'Affiliate Links',
'manage_options',
'wpaffiliate',
'wpaffiliate_admin_page',
'dashicons-admin-links',
26
);
}
add_action('admin_menu', 'wpaffiliate_admin_menu');
function wpaffiliate_admin_page() {
global $wpdb;
$table_name = $wpdb->prefix . 'wpaffiliate_links';
// Обработка формы
if (isset($_POST['wpaffiliate_add'])) {
$affiliate_id = sanitize_text_field($_POST['affiliate_id']);
$url = esc_url_raw($_POST['url']);
$description = sanitize_textarea_field($_POST['description']);
if ($affiliate_id && $url) {
$wpdb->replace($table_name, [
'affiliate_id' => $affiliate_id,
'url' => $url,
'description' => $description,
'clicks' => 0
]);
echo '<div class="updated"><p>Партнерская ссылка добавлена/обновлена.</p></div>';
} else {
echo '<div class="error"><p>Пожалуйста, заполните все обязательные поля.</p></div>';
}
}
// Получаем все ссылки
$links = $wpdb->get_results("SELECT * FROM $table_name ORDER BY id DESC");
// Форма добавления
echo '<h2>Добавить партнерскую ссылку</h2>';
echo '<form method="post">';
echo '<table class="form-table"><tbody>';
echo '<tr><th scope="row">Affiliate ID</th><td><input name="affiliate_id" type="text" required></td></tr>';
echo '<tr><th scope="row">URL</th><td><input name="url" type="url" required></td></tr>';
echo '<tr><th scope="row">Описание</th><td><textarea name="description" rows="3"></textarea></td></tr>';
echo '</tbody></table>';
echo '<p><input type="submit" name="wpaffiliate_add" class="button button-primary" value="Добавить ссылку"></p>';
echo '</form>';
// Таблица ссылок
echo '<h2>Список партнерских ссылок</h2>';
echo '<table class="wp-list-table widefat fixed striped"><thead><tr><th>ID</th><th>Affiliate ID</th><th>URL</th><th>Описание</th><th>Клики</th></tr></thead><tbody>';
foreach ($links as $link) {
echo '<tr>';
echo '<td>' . esc_html($link->id) . '</td>';
echo '<td>' . esc_html($link->affiliate_id) . '</td>';
echo '<td><a href="' . esc_url($link->url) . '" target="_blank">' . esc_html($link->url) . '</a></td>';
echo '<td>' . esc_html($link->description) . '</td>';
echo '<td>' . intval($link->clicks) . '</td>';
echo '</tr>';
}
echo '</tbody></table>';
}
Теперь через админку можно создавать и просматривать партнерские ссылки и видеть количество кликов по ним.
Обработка переходов и увеличение счетчика кликов
Чтобы отслеживать переходы, сделаем специальный URL с параметром, например, ?aff=partner123. При заходе на сайт с таким параметром плагин перенаправит пользователя на нужный URL и увеличит счетчик кликов.
function wpaffiliate_handle_redirect() {
if (isset($_GET['aff'])) {
global $wpdb;
$table_name = $wpdb->prefix . 'wpaffiliate_links';
$affiliate_id = sanitize_text_field($_GET['aff']);
$link = $wpdb->get_row($wpdb->prepare("SELECT * FROM $table_name WHERE affiliate_id = %s", $affiliate_id));
if ($link) {
// Увеличиваем счетчик
$wpdb->query($wpdb->prepare("UPDATE $table_name SET clicks = clicks + 1 WHERE id = %d", $link->id));
// Перенаправляем пользователя
wp_redirect($link->url);
exit;
}
}
}
add_action('init', 'wpaffiliate_handle_redirect');Таким образом, пользователи могут переходить по ссылкам вида https://wpaffiliate.ru/?aff=partner123, и вы будете точно знать, сколько кликов было по каждой ссылке.
Расширение функционала: создание шорткода для вставки affiliate ссылок в записи
Для удобства добавим шорткод, который позволит вставлять партнерские ссылки прямо в посты или страницы, используя affiliate ID.
function wpaffiliate_shortcode($atts) {
$atts = shortcode_atts(['id' => ''], $atts);
if (!$atts['id']) return '';
$url = home_url('/?aff=' . urlencode($atts['id']));
return '<a href="' . esc_url($url) . '" target="_blank" rel="nofollow">Партнерская ссылка</a>';
}
add_shortcode('wpaffiliate_link', 'wpaffiliate_shortcode');Пример использования в записи:
[wpaffiliate_link id="partner123"]
Это выведет ссылку с правильным редиректом и отслеживанием кликов.
Дополнительные идеи и улучшения
Вы можете дополнить плагин следующими возможностями:
- Подключение Google Analytics или других систем аналитики для более глубокого анализа.
- Автоматическое создание партнерских ссылок для популярных товаров или категорий.
- Настройка уведомлений о достижении определенного количества кликов.
- Создание отчетов с графиками и экспортом данных.
Все это сделает ваш affiliate плагин мощным инструментом для управления партнерскими программами на WordPress.