Слайдеры — популярный элемент современного дизайна сайтов на 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:
- Подключите стили и скрипты через
wp_enqueue_scripts. - Инициализируйте слайдер в вашем шорткоде с нужными параметрами.
Но если задача — минимализм и контроль, собственный слайдер, как описано выше, будет оптимальным.
Оптимизация изображений в слайдере для быстрой загрузки
Обязательно используйте функцию WordPress the_post_thumbnail с подходящим размером. Также можно подключить плагины для ленивой загрузки, например Lazy Load by WP Rocket или Smush, чтобы изображения загружались только когда слайд становится видимым.
Кроме того, стоит конвертировать изображения в современные форматы (WebP) для ускорения загрузки.
Вывод
Создание собственного адаптивного слайдера в WordPress — отличный способ получить легкий, быстрый и удобный элемент интерфейса без лишних зависимостей. Используя кастомный тип записи, шорткод и минимальный JavaScript, вы сможете полностью контролировать его поведение и дизайн. При необходимости расширяйте функционал проверенными библиотеками и оптимизируйте изображения для максимальной производительности.