Как создать собственный affiliate плагин для WordPress

Аффилиат-маркетинг — один из самых популярных способов монетизации сайтов. Если вы хотите получить полный контроль над партнерскими ссылками на своем 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.

Как добавить автоматическую поддержку Telegram для affiliate сайта на WordPress
18.03.2026
Как создать динамические affiliate ссылки в WordPress
16.11.2025
Как сделать автоматическое отказание от affiliate программ в WordPress при низкой конверсии
23.01.2026
Как создать собственный виджет для affiliate сайтов WordPress
30.11.2025
Как оптимизировать производительность WordPress для affiliate сайтов
11.11.2025