Как создать адаптивный слайдер в WordPress с нуля

Слайдеры — популярный элемент современного дизайна сайтов на WordPress, позволяющий эффектно показать важный контент, изображения или акции. Однако готовые плагины часто перегружены лишним функционалом или замедляют загрузку сайта. В этой статье мы разберем, как создать адаптивный слайдер в WordPress с нуля, используя минимальный кастомный код и лучшие практики.

Почему стоит создавать собственный адаптивный слайдер в WordPress

Готовые решения, такие как Slider Revolution или Smart Slider, мощные, но часто избыточные и нагружают сайт. Создавая свой слайдер, вы получаете:

  • Легкий и быстрый код, оптимизированный под ваши задачи.
  • Полный контроль над функционалом и дизайном.
  • Минимум зависимостей и конфликтов с другими плагинами.
  • Простоту адаптации под мобильные устройства и разные разрешения.

Собственный слайдер — отличный способ улучшить производительность и UX сайта.

Основные принципы адаптивного слайдера

Адаптивность означает, что слайдер корректно отображается на любых устройствах — от больших экранов до смартфонов. Для этого нужно:

  • Использовать гибкие единицы измерения (%, vw, vh) вместо фиксированных пикселей.
  • Применять CSS media queries для перестроения структуры слайдера на разных разрешениях.
  • Обеспечить удобное управление — кнопки, свайпы, навигация.
  • Продумать оптимальную загрузку изображений (ленивая загрузка, WebP).

Создаем кастомный адаптивный слайдер в WordPress — пошагово

1. Регистрация кастомного типа записи для слайдов

Для удобства управления слайдами в админке создадим кастомный тип записи wplancer_slider. Добавьте в functions.php вашей темы следующий код:

function wplancer_register_slider_cpt() {
    $labels = array(
        'name' => 'Слайды',
        'singular_name' => 'Слайд',
        'add_new' => 'Добавить слайд',
        'add_new_item' => 'Добавить новый слайд',
        'edit_item' => 'Редактировать слайд',
        'all_items' => 'Все слайды',
        'menu_name' => 'Слайдер'
    );
    $args = array(
        'labels' => $labels,
        'public' => false,
        'show_ui' => true,
        'supports' => array('title', 'thumbnail', 'excerpt')
    );
    register_post_type('wplancer_slider', $args);
}
add_action('init', 'wplancer_register_slider_cpt');

Теперь в админке появится раздел для добавления слайдов с заголовком, изображением и описанием.

2. Вывод слайдов на сайте

Создадим шорткод для вывода слайдера. В functions.php добавьте:

function wplancer_slider_shortcode() {
    $args = array(
        'post_type' => 'wplancer_slider',
        'posts_per_page' => -1,
        'orderby' => 'menu_order',
        'order' => 'ASC'
    );
    $slides = new WP_Query($args);
    if (!$slides->have_posts()) return 'Слайды не найдены';

    ob_start();
    ?>
    <div class="wplancer-slider">
        <div class="wplancer-slider-wrapper">
            <?php while ($slides->have_posts()) : $slides->the_post(); ?>
                <div class="wplancer-slide">
                    <?php the_post_thumbnail('large', ['class' => 'wplancer-slide-image']); ?>
                    <div class="wplancer-slide-content">
                        <h3><?php the_title(); ?></h3>
                        <p><?php the_excerpt(); ?></p>
                    </div>
                </div>
            <?php endwhile; wp_reset_postdata(); ?>
        </div>
        <button class="wplancer-prev">❮</button>
        <button class="wplancer-next">❯</button>
    </div>
    <?php
    return ob_get_clean();
}
add_shortcode('wplancer_slider', 'wplancer_slider_shortcode');

Этот шорткод выводит слайды с кнопками навигации.

3. Стилизация и адаптивность

Добавьте в файл стилей темы (style.css) следующий CSS:

.wplancer-slider {
  position: relative;
  max-width: 100%;
  overflow: hidden;
}
.wplancer-slider-wrapper {
  display: flex;
  transition: transform 0.5s ease;
}
.wplancer-slide {
  min-width: 100%;
  box-sizing: border-box;
  position: relative;
}
.wplancer-slide-image {
  width: 100%;
  height: auto;
  display: block;
}
.wplancer-slide-content {
  position: absolute;
  bottom: 20px;
  left: 20px;
  color: white;
  background: rgba(0,0,0,0.5);
  padding: 10px;
  border-radius: 5px;
  max-width: 90%;
}
.wplancer-prev, .wplancer-next {
  position: absolute;
  top: 50%;
  background: rgba(0,0,0,0.3);
  border: none;
  color: white;
  font-size: 30px;
  cursor: pointer;
  padding: 10px;
  border-radius: 50%;
  user-select: none;
  transform: translateY(-50%);
}
.wplancer-prev {
  left: 10px;
}
.wplancer-next {
  right: 10px;
}
@media (max-width: 768px) {
  .wplancer-slide-content {
    font-size: 14px;
    bottom: 10px;
    left: 10px;
    padding: 7px;
  }
  .wplancer-prev, .wplancer-next {
    font-size: 24px;
    padding: 7px;
  }
}

Это базовая стилизация, делающая слайдер адаптивным и удобным для мобильных.

4. Добавляем функционал переключения слайдов на JavaScript

В footer.php или через wp_enqueue_script добавьте скрипт:

document.addEventListener('DOMContentLoaded', function() {
  const slider = document.querySelector('.wplancer-slider-wrapper');
  const slides = document.querySelectorAll('.wplancer-slide');
  const prevBtn = document.querySelector('.wplancer-prev');
  const nextBtn = document.querySelector('.wplancer-next');
  let index = 0;

  function wplancer_showSlide(i) {
    if(i < 0) index = slides.length - 1;
    else if(i >= slides.length) index = 0;
    else index = i;
    slider.style.transform = 'translateX(' + (-index * 100) + '%)';
  }

  prevBtn.addEventListener('click', () => {
    wplancer_showSlide(index - 1);
  });

  nextBtn.addEventListener('click', () => {
    wplancer_showSlide(index + 1);
  });

  // Автоматическая прокрутка
  setInterval(() => {
    wplancer_showSlide(index + 1);
  }, 5000);

  wplancer_showSlide(index);
});

Этот скрипт переключает слайды по кнопкам и автоматически каждые 5 секунд.

Дополнительные советы и плагины для расширения слайдера

Если хотите добавить более сложные эффекты, анимации или поддержку свайпов, можно подключить лёгкие библиотеки, например:

  • Swiper.js — мощный и гибкий слайдер с поддержкой адаптивности и сенсорных экранов.
  • Flickity — простой в использовании и кастомизации.

Для интеграции Swiper.js в WordPress:

  1. Подключите стили и скрипты через wp_enqueue_scripts.
  2. Инициализируйте слайдер в вашем шорткоде с нужными параметрами.

Но если задача — минимализм и контроль, собственный слайдер, как описано выше, будет оптимальным.

Оптимизация изображений в слайдере для быстрой загрузки

Обязательно используйте функцию WordPress the_post_thumbnail с подходящим размером. Также можно подключить плагины для ленивой загрузки, например Lazy Load by WP Rocket или Smush, чтобы изображения загружались только когда слайд становится видимым.

Кроме того, стоит конвертировать изображения в современные форматы (WebP) для ускорения загрузки.

Вывод

Создание собственного адаптивного слайдера в WordPress — отличный способ получить легкий, быстрый и удобный элемент интерфейса без лишних зависимостей. Используя кастомный тип записи, шорткод и минимальный JavaScript, вы сможете полностью контролировать его поведение и дизайн. При необходимости расширяйте функционал проверенными библиотеками и оптимизируйте изображения для максимальной производительности.

Как удалить закрытые комментарии в WordPress: практическое руководство с примерами
30.03.2026
Как создать собственный визуальный композитор в WordPress
13.11.2025
Как автоматизировать удаление оставленных товаров из корзины в WooCommerce
17.05.2026
Как создать собственный REST API в WordPress с примерами кода
26.11.2025
Добавление пользовательского каталога для загрузки файлов в WordPress без плагинов
03.06.2026