В статье мы разберём, как создать собственный виджет для affiliate сайтов на WordPress. Это поможет вам гибко и удобно отображать партнерские ссылки, продукты или рекламные баннеры в сайдбаре или других виджетных зонах вашего сайта. Такой подход даст полный контроль над выводом информации и позволит легко интегрировать ваши affiliate кампании.
Почему стоит создавать собственный виджет для affiliate WordPress
Готовые плагины часто не удовлетворяют всем требованиям по дизайну или функционалу, особенно если вы хотите уникальное отображение партнерских товаров. Собственный виджет позволяет:
- Точно контролировать внешний вид и содержание;
- Добавлять динамические элементы и фильтры;
- Оптимизировать загрузку и SEO-показатели;
- Интегрировать уникальные affiliate ссылки и параметры;
- Использовать персонализированные настройки для разных страниц.
Все это особенно важно для affiliate проектов, где конверсия напрямую зависит от удобства и привлекательности контента.
Основы создания виджета в WordPress для affiliate сайтов
Виджеты в WordPress создаются через расширение класса WP_Widget. Важно правильно организовать код, чтобы виджет был удобен для настройки через админку и корректно отображался на фронтенде.
Ниже приведён базовый шаблон виджета для affiliate ссылок на вашем сайте wpaffiliate.ru:
class WPAffiliate_Widget extends WP_Widget {
public function __construct() {
parent::__construct(
'wpaffiliate_widget',
__('WPAffiliate Партнерский виджет', 'wpaffiliate'),
array('description' => __('Виджет для отображения affiliate ссылок и баннеров', 'wpaffiliate'))
);
}
public function widget($args, $instance) {
echo $args['before_widget'];
if (!empty($instance['title'])) {
echo $args['before_title'] . apply_filters('widget_title', $instance['title']) . $args['after_title'];
}
// Вывод affiliate ссылки с кастомным параметром
$link = !empty($instance['link']) ? esc_url($instance['link']) : '#';
$text = !empty($instance['text']) ? esc_html($instance['text']) : __('Партнерская ссылка', 'wpaffiliate');
echo '<a href="'. $link .'" target="_blank" rel="nofollow">' . $text . '</a>';
echo $args['after_widget'];
}
public function form($instance) {
$title = !empty($instance['title']) ? $instance['title'] : '';
$link = !empty($instance['link']) ? $instance['link'] : '';
$text = !empty($instance['text']) ? $instance['text'] : '';
?>
<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Заголовок:', 'wpaffiliate'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" />
</p>
<p><label for="<?php echo $this->get_field_id('link'); ?>"><?php _e('Ссылка:', 'wpaffiliate'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('link'); ?>" name="<?php echo $this->get_field_name('link'); ?>" type="text" value="<?php echo esc_attr($link); ?>" />
</p>
<p><label for="<?php echo $this->get_field_id('text'); ?>"><?php _e('Текст ссылки:', 'wpaffiliate'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>" type="text" value="<?php echo esc_attr($text); ?>" />
</p>
<?php
}
public function update($new_instance, $old_instance) {
$instance = array();
$instance['title'] = (!empty($new_instance['title'])) ? sanitize_text_field($new_instance['title']) : '';
$instance['link'] = (!empty($new_instance['link'])) ? esc_url_raw($new_instance['link']) : '';
$instance['text'] = (!empty($new_instance['text'])) ? sanitize_text_field($new_instance['text']) : '';
return $instance;
}
}
function wpaffiliate_register_widget() {
register_widget('WPAffiliate_Widget');
}
add_action('widgets_init', 'wpaffiliate_register_widget');Этот код создаст простой виджет с настройками заголовка, ссылки и текста ссылки. Он уже будет отображать кликабельную партнерскую ссылку с атрибутами target="_blank" rel="nofollow", что важно для SEO и безопасности.
Расширение функционала виджета: динамические affiliate ссылки и баннеры
Для affiliate сайтов полезно показывать не просто статические ссылки, а динамический контент. Например, ссылки с уникальными токенами, баннеры с изображениями или списки товаров.
Добавим возможность загружать изображение баннера и создавать ссылку с параметрами для отслеживания:
- В форме виджета добавим поле для URL изображения;
- В методе
widgetвыведем изображение внутри ссылки с параметрами; - Используем функцию для генерации партнерской ссылки с дополнительными GET-параметрами.
Пример кода генерации ссылки с параметрами:
function wpaffiliate_generate_affiliate_link($base_url, $params = array()) {
if (empty($params)) return $base_url;
$query = http_build_query($params);
return $base_url . (strpos($base_url, '?') === false ? '?' : '&') . $query;
}Вызов в виджете:
$params = array('utm_source' => 'widget', 'aff_id' => '12345');
$link_with_params = wpaffiliate_generate_affiliate_link($link, $params);
echo '<a href="'. esc_url($link_with_params) .'" target="_blank" rel="nofollow">';
if (!empty($instance['image'])) {
echo '<img src="'. esc_url($instance['image']) .'" alt="'. esc_attr($text) .'" />';
} else {
echo esc_html($text);
}
echo '</a>';Советы по оптимизации и безопасности affiliate виджета
При создании виджета важно учитывать несколько моментов:
- Валидация и очистка данных — используйте
sanitize_text_field,esc_urlи другие функции WordPress для предотвращения XSS и других угроз. - Добавляйте атрибуты
rel="nofollow noopener noreferrer"к внешним ссылкам, чтобы не передавать SEO вес и повысить безопасность. - Кэшируйте вывод виджета, если он содержит динамический контент или данные из внешних API, чтобы не нагружать сервер.
- Позволяйте пользователю через настройки выбирать, показывать ли изображение, текст или оба варианта.
- Используйте переводимые строки через функции
__()и_e(), чтобы виджет был готов к локализации.
Примеры полезных плагинов для расширения функционала affiliate виджетов
Если хотите добавить еще больше возможностей без сложной кастомизации, обратите внимание на следующие плагины:
- Pretty Links — управление и сокращение affiliate ссылок, интеграция с виджетами.
- ThirstyAffiliates — автоматизация создания и вставки партнерских ссылок.
- Ad Inserter — удобное размещение рекламных блоков и баннеров в виджетах и шаблонах.
- Widget Options — расширенные настройки виджетов, включая показ по ролям, страницам и устройствам.
Комбинируя собственный виджет и эти плагины, вы получите мощный инструмент для монетизации и управления affiliate трафиком.
Заключение
Создание собственного виджета для affiliate сайтов на WordPress — это отличный способ получить полный контроль над отображением партнерских ссылок и баннеров. Вы можете легко адаптировать его под свои нужды, добавлять динамические параметры, интегрировать с другими плагинами и оптимизировать под SEO и UX. Начинайте с простого шаблона, который мы рассмотрели, и расширяйте его функционал по мере необходимости.