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

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

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

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

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

К тому же, вы сможете легко интегрировать слайдер в любую тему или плагин, а также расширять его по мере необходимости.

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

Перед тем как начать, определим ключевые требования:

  • Поддержка любых изображений и контента
  • Автоматическая смена слайдов с возможностью управления вручную
  • Адаптивность: корректное отображение на мобильных, планшетах и ПК
  • Чистый и понятный код без сторонних библиотек (по возможности)

Создаем кастомный тип записей для слайдов в WordPress

Чтобы удобно управлять слайдами из админки, создадим кастомный тип записей wpboot_slider. Это позволит добавлять новые слайды через привычный интерфейс.

function wpboot_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', 'editor'),
        'menu_icon' => 'dashicons-images-alt2',
    );

    register_post_type('wpboot_slider', $args);
}
add_action('init', 'wpboot_register_slider_cpt');

В этом коде мы регистрируем тип записей с поддержкой заголовка, миниатюры и редактора для дополнительного описания слайда. После добавления этого кода в functions.php вашей темы или в плагин, в админке появится раздел «Слайдер», где можно создавать новые слайды.

Вывод слайдера на сайте с помощью шорткода

Создадим шорткод [wpboot_slider], который выведет слайдер в любом месте сайта. Для начала напишем функцию, которая получит все слайды и сформирует HTML-код слайдера.

function wpboot_display_slider() {
    $args = array(
        'post_type' => 'wpboot_slider',
        'posts_per_page' => -1,
        'orderby' => 'menu_order',
        'order' => 'ASC',
    );
    $slides = get_posts($args);
    if (empty($slides)) {
        return '<p>Слайды не найдены.</p>';
    }

    $output = '<div class="wpboot-slider"><div class="wpboot-slider-wrapper">';

    foreach ($slides as $slide) {
        $img = get_the_post_thumbnail_url($slide->ID, 'full');
        $title = esc_html($slide->post_title);
        $content = apply_filters('the_content', $slide->post_content);

        $output .= "<div class='wpboot-slide'>";
        if ($img) {
            $output .= "<img src='{$img}' alt='{$title}' />";
        }
        if ($title) {
            $output .= "<h3>{$title}</h3>";
        }
        if ($content) {
            $output .= "<div class='wpboot-slide-content'>{$content}</div>";
        }
        $output .= "</div>";
    }

    $output .= '</div>';
    $output .= '<button class="wpboot-slider-prev" aria-label="Назад">❮</button>';
    $output .= '<button class="wpboot-slider-next" aria-label="Вперед">❯</button>';
    $output .= '</div>';

    return $output;
}
add_shortcode('wpboot_slider', 'wpboot_display_slider');

Этот код создает контейнер слайдера, в котором выводит все слайды. Также добавлены кнопки для переключения — они будут работать благодаря следующему шагу.

Стилизация и адаптивность слайдера

Теперь добавим CSS, чтобы слайдер выглядел красиво и корректно отображался на всех устройствах. Вставьте следующий CSS в файл стилей вашей темы или с помощью функции wp_enqueue_style:

.wpboot-slider {
  position: relative;
  max-width: 100%;
  overflow: hidden;
}

.wpboot-slider-wrapper {
  display: flex;
  transition: transform 0.5s ease-in-out;
  will-change: transform;
}

.wpboot-slide {
  min-width: 100%;
  box-sizing: border-box;
  padding: 10px;
  text-align: center;
}

.wpboot-slide img {
  width: 100%;
  height: auto;
  display: block;
  margin: 0 auto 10px;
  border-radius: 8px;
}

.wpboot-slider-prev, .wpboot-slider-next {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background-color: rgba(0,0,0,0.5);
  border: none;
  color: #fff;
  font-size: 2rem;
  padding: 0 12px;
  cursor: pointer;
  border-radius: 3px;
  user-select: none;
  z-index: 10;
}

.wpboot-slider-prev { left: 10px; }
.wpboot-slider-next { right: 10px; }

@media (max-width: 768px) {
  .wpboot-slide h3 {
    font-size: 1.2rem;
  }
}

Эти стили обеспечивают горизонтальный вывод слайдов в ряд, плавную анимацию при смене и адаптивное масштабирование изображений и текста.

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

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

function wpboot_slider_scripts() {
    wp_enqueue_script('wpboot-slider-js', get_template_directory_uri() . '/js/wpboot-slider.js', array(), null, true);
}
add_action('wp_enqueue_scripts', 'wpboot_slider_scripts');

Создайте файл wpboot-slider.js в папке js вашей темы и вставьте туда следующий код:

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

    function updateSlider() {
        const offset = -currentIndex * 100;
        slider.style.transform = `translateX(${offset}%)`;
    }

    function showNext() {
        currentIndex = (currentIndex + 1) % totalSlides;
        updateSlider();
    }

    function showPrev() {
        currentIndex = (currentIndex - 1 + totalSlides) % totalSlides;
        updateSlider();
    }

    nextBtn.addEventListener('click', showNext);
    prevBtn.addEventListener('click', showPrev);

    // Автоматическая смена слайдов каждые 5 секунд
    setInterval(showNext, 5000);
});

Этот скрипт управляет сдвигом контейнера слайдов, переключая видимый слайд. Кнопки позволяют управлять вручную, а таймер обеспечивает автоматическую смену.

Оптимизация слайдера и рекомендации

Чтобы слайдер работал быстро и не перегружал сайт, рекомендуем:

  • Использовать сжатые изображения в подходящем размере — WordPress автоматически генерирует миниатюры.
  • Подключать скрипт и стили только на тех страницах, где используется шорткод слайдера.
  • Добавлять атрибуты loading="lazy" к изображениям для ленивой загрузки.
  • Проводить тесты производительности и адаптивности на разных устройствах и браузерах.

Пример добавления ленивой загрузки в вывод изображений:

$output .= "<img src='{$img}' alt='{$title}' loading='lazy' />";

Как подключить стили и скрипты только на страницах с слайдером

Для этого используйте проверку наличия шорткода:

function wpboot_conditionally_enqueue_slider_assets() {
    if ( is_singular() && has_shortcode(get_post()->post_content, 'wpboot_slider') ) {
        wp_enqueue_style('wpboot-slider-css', get_template_directory_uri() . '/css/wpboot-slider.css');
        wp_enqueue_script('wpboot-slider-js', get_template_directory_uri() . '/js/wpboot-slider.js', array(), null, true);
    }
}
add_action('wp_enqueue_scripts', 'wpboot_conditionally_enqueue_slider_assets');

Это уменьшит нагрузку на страницы, где слайдер не используется.

Заключение по созданию адаптивного слайдера в WordPress

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

Как увеличить качество изображений в WordPress для быстрой загрузки и высокого качества
20.05.2025
Как изменить имя автора поста в WordPress программно
09.04.2026
Автоматическое удаление старых записей в WordPress через cron с примерами
25.02.2026
Как использовать WPRemark для автоматического модератора комментариев в WordPress
14.02.2026
Как сделать автоматическое открытие попап окна в WordPress при загрузке страницы
06.01.2026