Слайдеры сейчас в моде, и не зря! Вы можете добавлять на свой сайт фотографии, контент, видео и многое другое, что привлекает внимание посетителей. В этом уроке рассмотрим, как самому создать красивый слайдер с изображениями на основе FlexSlider.
И хотя существует множество плагинов слайдеров (мой текущий фаворит - Nivo Slider), не существует плагина для FlexSlider - слайдера, у которого есть клавиатурные сокращения и который работает со скольжением на тачскринах.
Скачать исходники
Для начала скачайте исходники с кодом, который нам вскоре понадобится.
Вот как будет выглядеть сам слайдер:
Шаг 1. Подготовка
Первое, что нам необходимо сделать, - это установить плагин. Создайте папку /envato-flex-slider/, и в ней файл под названием ‘envato-flex-slider.php’. Сюда мы будем добавлять всю необходимую информацию и код для нашего плагина, начиная с блока объявления плагина:
<?php
/*
Plugin Name: Envato FlexSlider
Plugin URI:
Description: A simple plugin that integrates FlexSlider (http://flex.madebymufffin.com/) with WordPress using custom post types!
Author: Your Name
Version: 1.0
Author URI: Your URL
*/
?>
Я также хочу установить несколько констант для информации, которую я буду часто использовать в плагине. Под объявлением блока, но перед закрытием тега php, я добавляю следующую информацию:
Я создал три константы: путь к плагину, имя плагина и версию плагина, которая необходима для обновлений и для того, чтобы в случае необходимости известить WordPress Plugin Directory об изменениях.
Обратите внимание, я начинаю все мои константы с "EFS". Я буду делать то же самое с названиями функций, чтобы не создать конфликтов с другими плагинами или ядром WordPress.
Теперь, когда мы закончили с подготовкой, давайте добавим файлы и код FlexSlider.
Шаг 2. Добавление FlexSlider
Теперь пора добавить важную часть: javascript и CSS для FlexSlider. Мы сделаем это, используя wp_enqueue_script и wp_enqueue_style самого WordPress, чтобы избежать конфликтов. Вы можете скачать FlexSlider здесь. Нам понадобятся 2 файла: jquery.flexslider-min.js, и flexslider.css, в папке /theme/.
В обеих строках мы присваиваем имя каждому скрипту, затем привязываем файлы .js и .css. Обратите внимание, что мы используем нашу константу ESF_PATH. Нам нужно использовать полный путь, иначе файлы не привяжутся правильно.
Вы также можете заметить, что у нас есть третий параметр в wp_enqueue_script. Это массив других скриптов, от которых зависит наш скрипт. В данном случае, такой скрипт один – это JQuery. Здесь есть полный список скриптов, включенных в WordPress. Вы можете использовать любой из них, используя указанный массив зависимостей.
Следующее, что мы хотим сделать, это включить собственно JavaScript, который заставит скрипт работать. Мы сделаем это с помощью нашей собственной функции и Action-функции WordPress.
Важная строка здесь – add_action('wp_head', 'efs_script');, которая запустит нашу функцию efs_script(), когда будет вызвана wp_head. Наша функция просто выводит Javascript, необходимый для того, чтобы заставить FlexSlide делать свою работу.
Вы можете заметить, что я использую ‘JQuery’ вместо традиционного ‘$’, который обычно используется в скриптах JQuery. Я делаю это для того, чтобы наш скрипт не конфликтовал с другими библиотеками JavaScript, например, Scriptaculous.
Наконец, просто скопируйте папку /theme/ в вашу папку /envato-flex-slider/.
Шаг 3. Короткий код и тег шаблона
Дальше мы создадим наш шорткод (shortcode, короткий код) и тег шаблона. Шорткод позволит пользователям вставить слайдер в любую страницу или пост. Вводное руководство по шорткодам вы можете посмотреть здесь.
Тег шаблона позволит разработчикам тем вставлять слайдер прямо в их темы. Как разработчик тем, считаю чрезвычайно важным создавать и то, и то, и делать их легкодоступными в документации. Вы никогда не знаете, кто будет использовать ваш плагин.
function efs_get_slider(){
//We'll fill this in later.
}
/**add the shortcode for the slider- for use in editor**/
function efs_insert_slider($atts, $content=null){
$slider= efs_get_slider();
return $slider;
}
add_shortcode('ef_slider', 'efs_insert_slider');
/**add template tag- for use in themes**/
function efs_slider(){
print efs_get_slider();
}
Сейчас этот код выглядит достаточно просто. Для шорткода мы вызываем нашу общую функцию efs_get_slider() и возвращаем результат. Для тега шаблона мы выводим результат. Я специально упустил внедрение efs_get_slider(), поскольку мы пока не установили, откуда мы собираемся брать изображения.
Чтобы сделать добавление любого количества картинок в слайдер удобным для пользователя, мы создадим отдельный тип поста.
Шаг 4. Пользовательский тип поста Slider Image
Первое, что мы сделаем, - это создадим новый файл под названием ‘slider-img-type.php’, где будет весь наш код для пользовательского типа поста. Сначала мы сделаем некоторую подготовку, как мы делали это для плагина.
Как вы видите, все, что я пока сделал, это создал несколько констант (которые будут очень удобными для более сложных пользовательских типов постов) и добавил поддержку миниатюр для нашего нового типа.
Единственная вещь, которую мы еще сделаем здесь, это зарегистрируем новый пользовательский тип поста. Больше о пользовательских типах постов вы можете найти в руководстве по созданию отличного портфолио. Прямо перед закрытием php тега, мы добавим следующий код:
Мы создали функцию для регистрации пользовательского типа поста, который использует блоки для названия, редактирования и миниатюры. Далее мы добавили Action WordPress, чтобы вызвать эту функцию сразу же после инициализации WordPress.
Все! Последнее, что нам нужно сделать, это включить наш новый файл, добавив require_once('slider-img-type.php'); в envato-flex-slider.php. Я добавил его прямо над вызовом наших скриптов.
Теперь, когда мы знаем, как внедрять картинки в слайдер, давайте вернемся назад и заполним нашу общую функцию для слайдера.
Шаг 5. Генерация слайдера
Вернитесь к объявлению efs_get_slider() и замените //We'll fill this in later на следующее:
Первые две строки обязательны из-за метода работы FlexSlider. Он возьмет неупорядоченный список, который называется ‘slides’ внутри слоя ‘flexslider’ и применит к нему javascript анимацию. В нашем CSS также определены .flexslider и ul.slides.
После этого, мы создаем цикл WordPress, собирая все посты типа slider-image (наш пользовательский тип поста) и выводим большую версию картинки.
Далее мы возвращаем весь сгенерированный HTML как переменную, которая может быть выведена (нашим тегом шаблона), или возвращена (нашим шорткодом).
Несколько замечаний
С нашим новым пользовательским типом поста, мы можем добавлять заголовок и картинку, мы также добавили блок редактирования поста. И хотя сейчас мы используем только изображение (и заголовок, для атрибута alt), мы включили также редактор на случай, если, например, в будущем мы захотим сделать поддержку размещения надписи на слайдере.
Добавляя новый пост типа Slider Image, мы должны загрузить изображение Миниатюры, чтобы слайдер работал. Он не может просто взять прикрепленный к посту файл.
Шаг 6. Тестирование
Теперь время тестировать! Как только вы добавили несколько изображений в ваш пользовательский тип поста, создайте новую страницу (я назвал свою просто Slider) и добавьте в нее наш созданный недавно шорткод [ef_slider]. Сохраните страницу и просмотрите ее. Вы должны увидеть нечто вроде этого:
Заключение
На этом все. Конечно, есть еще несколько вещей, которые можно улучшить в плагине. Например, добавить поддержку вариантов для расширенной настройки, которую может предложить FlexSlider, или добавление поддержки названий.
Как было сказано, этот плагин дает вам все необходимое для создания действительно простой, легкой в управлении, легкой для вставки версии FlexSlider для WordPress!
Если вы не уверены по поводу вставок или добавления файлов, вы можете загрузить исходники по ссылке вверху руководства. Удачи!
Изучает сайтостроение с 2008 года. Практикующий вебмастер, специализирующийся на создании сайтов на WordPress. Задать вопрос Алексею можно на https://profiles.wordpress.org/wpthemeus/
Да, вы можете вставить готовый код слайдера в header.php в нужном месте или же в index.php, если хотите разместить его в основной части главной страницы.
Извините, но подскажите если вставляю [ef_slider], то на странице отображается именно [ef_slider], что я делаю не так? css и js в папке Theame в которой находятся все файлы и папки скаченные с сайта.
Извините, но подскажите если вставляю [ef_slider], то на странице отображается именно [ef_slider], что я делаю не так? css и js в папке Theame в которой находятся все файлы и папки скаченные с сайта.
Можете ли помочь совсем чайникам, которые не знают что такое языки программирования, коды… Можно ли взять готовый плагин, вставить ссылки на видеоролики, и чтоб был слайдер? Или готовый код…?
Все замечательно было бы хорошо если бы появилось видео туториал а то читая порой не понять что именно надо вводить и как бы как добавлять картинки и тд
Здравствуйте! Подскажите плиз, как только я установил плагин Rus-To-Lat то слайдер в теме Bresponzive перестает работать. И даже если эти плагин деактивировать или удалить, то все ровно слайдер перестает работать, грузит и не показывает картинки. Подскажите плиз как исправить… ссылка на сайт http://янаул102.рф/
Комментарии к записи: 13
Очень интересно
А как вставить слайдер только на главную страницу выше всего контента?
какой то код вписать в header.php ?
Да, вы можете вставить готовый код слайдера в header.php в нужном месте или же в index.php, если хотите разместить его в основной части главной страницы.
Извините, но подскажите если вставляю [ef_slider], то на странице отображается именно [ef_slider], что я делаю не так? css и js в папке Theame в которой находятся все файлы и папки скаченные с сайта.
надо добавить в нужном месте header.php
Извините, но подскажите если вставляю [ef_slider], то на странице отображается именно [ef_slider], что я делаю не так? css и js в папке Theame в которой находятся все файлы и папки скаченные с сайта.
Можете ли помочь совсем чайникам, которые не знают что такое языки программирования, коды… Можно ли взять готовый плагин, вставить ссылки на видеоролики, и чтоб был слайдер? Или готовый код…?
Конечно уже есть готовые решения в виде плагинов. Вы можете поискать на официальном репозитории плагинов WordPress или в поисковике.
Спасибо огромнейшее за статью!Чтобы слайдер смотрелся симпатичнее и стрелки не отступали от слайдера в файл flexslider.css надо добавить стиль:
.flexslider {
background: none repeat scroll 0 0 #FFFFFF;
border: 4px solid #FFFFFF;
border-radius: 4px 4px 4px 4px;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
margin: 0 0 60px;
position: relative;
}
Ну тут уже на вкус и цвет, как говорится)
Все замечательно было бы хорошо если бы появилось видео туториал а то читая порой не понять что именно надо вводить и как бы как добавлять картинки и тд
Здравствуйте! Подскажите плиз, как только я установил плагин Rus-To-Lat то слайдер в теме Bresponzive перестает работать. И даже если эти плагин деактивировать или удалить, то все ровно слайдер перестает работать, грузит и не показывает картинки. Подскажите плиз как исправить… ссылка на сайт http://янаул102.рф/
Слайдер не рабочий . Что то вы забыли указать в статье. Выводит [ef_slider], то же что и писала Анна .