ЗАГРУЖАЮ...!

Галерея для сайта на основе плагина Carbon Fields

Реализация своего плагина для вывода галереи на сайте с использованием Media Gallery как отдельный тип записи или шорткодом.

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

Для реализации будем использовать готовое решение для лайтбоксов «lightGallery» - который в свою очередь работает на jQuery.

Задача:

Создать на сайте возможность управлять медиа галереей с возможностью настраивать вывод на фронт в зависимости от потребностей пользователя.

Скриншот галереи: «lightGallery»

Важно!
Для этого у вас должен быть установлен и активирован плагин Carbon Fields.
В этой статье Установка плагина Carbon Fields на WordPress я рассказал как можно установить его разными способами.

Создание плагина SV Media Gallery

Для начала давайте создадим плагин и назовём его SV Media Gallery

Создадим директорию sv-media-gallery и главный файл плагина sv-media-gallery.php

В итоге иерархия плагина должна получиться следующая:

/wp-content/plugins/sv-media-gallery/
└── sv-media-gallery.php

Чтоб наш wordpress его распознал, запишем минимальный заголовок в файл sv-media-gallery.php

Теперь у нас появился в общем списке плагин SV Media Gallery - активируем его.

Создание нового типа записи Галерея

Для начало нам нужно зарегистрировать новый тип записи в наш wordpress, для этого запишем следующее:

После этого нужно зайти в Настройки постоянных ссылок и пере сохранить их.

'menu_icon' - данный аргумент добавляет иконку в меню, которую я подобрал для галереи.
Весь список иконок которые входят в состав ядра WordPress можно посмотреть тут: Dashicons

После чего как и хотели в админке появляется новый тип записи Галерея с заданной нами иконкой.

Теперь нужно подключить Carbon Fields и добавить мета-бокс галереи.

Конечно по хорошему нужно разбить это всё на классы и работать в них, но для примера и чтобы вас не путать, будем работать в одном файле.

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

Предположим, что общая ширина контейнера галереи 960px, а сетка должна быть разбита по 5 изображений и между ними отступ 10px, то соответственно размер миниатюры
должен быть 184 x 125px

Давайте зарегистрируем новый размер миниатюры наших будущих изображений, для этого воспользуемся готовой wp функцией: add_image_size()

Добавим в наш файл:

Вёрстка контейнера галереи

Для этого создадим директорию css в ней создаём файл стилей style.css

В итоге иерархия плагина должна получиться следующая:

/wp-content/plugins/sv-media-gallery/
├── css/
     └── style.css
└── sv-media-gallery.php

Чуть-чуть HTML

Немного CSS

Создание шаблона страницы галереи

Теперь нужно создать шаблон страниц плагина для вывода на фронт.

Создаём директорию в нашем плагине templates и в ней же создаём файлы single.php и archive.php

В итоге иерархия плагина должна получиться следующая:

/wp-content/plugins/sv-media-gallery/
├── css/
     └── style.css
├── templates/
     ├── archive.php
     └── single.php
└── sv-media-gallery.php

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

Для того чтоб переопределить стандартные шаблоны темы single.php и archive.php добавим код

Подключение CSS и JS плагина lightGallery

Когда все файлы и верстка подготовлены, подключим необходимые файлы плагина LightGallery.
Для этого переходим в репозиторий плагина на GitHub и скачиваем архив: GitHub lightGallery

Возьмем из скаченного архива LightGallery лишь минифицированные версии css и js в целях оптимизации нашего плагина. Плюс изображения и шрифты для правильной работы LightGallery.

Создадим новую директорию в нашем плагине lightgallery и переносим нужные файлы.

В итоге иерархия плагина должна получиться следующая:

/wp-content/plugins/sv-media-gallery/
├── css/
     └── style.css
├── templates/
     ├── archive.php
     └── single.php
├── lightgallery/
     ├── css/
          └── lightgallery.min.css
     ├── js/
          ├── lg-fullscreen.min.js
          ├── lg-thumbnail.min.js
          └── lightgallery-all.min.js
     ├── fonts/
          ├── lg.svg
          ├── lg.ttf
          └── lg.woff
     └── img/
          ├── loading.gif
          ├── video-play.png
          ├── vimeo-play.png
          └── youtube-play.png
└── sv-media-gallery.php

Далее пропишем их подключение в главном файле нашего плагина

Вывод галереи на Фронт на отдельной странице

Для начала нужно добавить фото в нашу новую галерею.

Теперь когда контент наполнен данными и все файлы подключены можно поработать над выводом цикла наших фото на странице.

Берём наш заготовленный html контейнер с классом sv-container в файле single.php
между тегами <!-- SV Media Gallery --> и <!--/ SV Media Gallery --> заменяем на

Отмечу что миниатюра которую мы генерируем в процессе, а именно:

Настройки галереи lightGallery

Осталось указать настройки галереи согласно документации lightGallery Docs добавим в наш файл:

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

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

Давайте напишем обработчик будущего шорткода, пишем:

Затем нужно произвести корректировку вывода js и css, для этого выставим условия, для того чтоб файлы не грузились там где это не нужно.

Теперь нам доступен шорткод на любой странице вида
[sv-gallery id="187"] где id - страницы галереи.
Так же плагин будет поддерживать несколько шорткодов на одной странице блога или отдельной страницы.

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

Для этого добавим:

В итоге получаем то, что хотели:

Добавление настроек плагина SV Media Gallery

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

Разбиваем настройки на две части:

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

Можно сделать настройки на отдельной странице, чтоб можно было задать их один раз и они будут работать на всех будущих галереях, но мы не ищем легких путей 😉 так что будем пилить для каждой отдельной галереи собственные настройки.
При этом сделаем так, чтоб пользователь не парился для каждой отдельной страницы выставляя желанные настройки, по этому выставим настройки по умолчанию при создании новой галереи.

В начале займемся написанием настройки эффектов вывода слайдов, так как их не мало, по этому организуем их списком.

Хранить наши настройки будем в таблице *_postmeta и для этого воспользуемся типом контейнера Carbon Fields post_meta, а для удобства расположим в правом сайт-баре страницы редактирования.

И получаем желанный результат

Далее нам нужно их принять в нашем js скрипте

Осталось дописать по аналогии для всех остальных

По итогу получаем все настройки

Исходный код готового плагина SV Media Gallery

Посмотреть исходный код можно в нашем репозитории на GitHub, а так же
скачать полностью готовый плагин с интегрированным Carbon Fields + основными настройками по умолчанию и локализацией Rus and Eng: GitHub SV Media Gallery

Вам понравилась статья? Оставьте свои пожелания в комментариях и не забудьте
рассказать об этом своим друзьям и знакомым, вы можете воспользоваться кнопками ниже.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Войти от имени:Кнопкиили как гость:

Нужен сайт? Закажите прямо сейчас!