Как создать собственный 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.

Решение проблемы с дубликатами affiliate ссылок в WordPress
18.04.2026
Как автоматизировать управление купонными кодами в WordPress affiliate сайтах
14.04.2026
Как исправить проблему не работающих affiliate ссылок в WooCommerce после обновления
22.06.2026
Как исправить проблему не работающих affiliate ссылок в WooCommerce после обновления
10.06.2026
Как создать автоматический редирект affiliate ссылок в WordPress
20.12.2025