CanVas
@CanVas
Веб-мастер

Как в wordpress в теме добавить выбор нескольких изображений?

Вплотную перешёл на вёрстку на Wordpress. И тут же сталкиваюсь с многими проблемами.
Одна из основных - нет возможности в шаблоне, в настройках, сделать поле выбора нескольких изображений. Т.е. создания галереи.
Одного можно:
$wp_customize->add_control(
       new WP_Customize_Image_Control(
           $wp_customize,
           'logo',
           array(
               'label'      => __( 'Upload a logo', 'theme_name' ),
               'section'    => 'your_section_id',
               'settings'   => 'your_setting_id',
               'context'    => 'your_setting_context' 
           )
       )
   );

А нескольких - как?
  • Вопрос задан
  • 2763 просмотра
Решения вопроса 1
cesnokov
@cesnokov
<head>&nbsp;</head>
Возможны несколько вариантов исполнения, и предлагаемый мной не является единственно правильным, а просто поможет Вам сэкономить время и понять как всё работает. Я (лично я) последнее время подсел на PODs и почему-то везде его сую. Так вот, если использовать PODs, то решение вашей задачи будет такой:
- Инсталируем "PODs" в "Wordpress": PlugIns > Add New > Pods - Custom Content Types and Fields;
- Добавляем для записей типа "Page" дополнительное поле: Pods Admin > Add New > Extend Existing > Post Type - Poge > Add Field.
- Так как это будут некие файлы, и их будет несколько, то надо добавить поле (Add Field), например с такими параметрами:
  • Label: Gallery Images
  • Name: page_gallery_images
  • Field Type: File / Image / Video
  • Upload Limit: Multiple Files
  • File Uploader: Attachments
  • Restrict File Types: Images

- Сохраняем и смотрим что получилось. В редактировании станиц должно появиться: Extra Fields с полем Gallery Images и кнопкой Add File. Сюда и загружаем (или выбираем из имеющихся в библиотеке) нужные картинки.
- Для вывода картинок в шаблоне есть несколько вариантов, используя функции "WordPress" или функции "PODs", или и то и другое. В этом примере используем функцию "WordPress" get_post_meta():

$page_images = array(); //Сюда будем записывать информацию о картинках
$page_id = get_the_ID(); //ID нынешней страницы

//Получаем информацию из созданного нами поля "page_gallery_images":
$page_images = get_post_meta($page_id, 'page_gallery_images');
//Если нужно получить только одну (первую) картинку, то в конце добавим true:
//$page_images = get_post_meta($page_id, 'page_gallery_images', true);
//Документация здесь: https://developer.wordpress.org/reference/functions/get_post_meta/

//Разные поля PODs возвращают разные типы данных, 
//в нашем случае, это будет массив с информацией о картинках
//посмотреть содержимое которого можно (например) так:
//echo '<pre>';
//print_r ($page_images);
//echo '</pre>';

//Выводим картинки:
foreach ( $page_images as $image ){
   echo '<img src="' . $image['guid'] . ">';
}


Если надо сделать несколько "слайдеров", то можно создать несколько полей для загрузки изображений в Pods Admin и вывести их в шаблоне. Для тех кто не хочет ничего выводить в шаблоне, существуют Shortcodes и MagicTags.

Также совсем не обязательно поля привязывать к страницам, а можно сделать отдельную страницу с настройками (Pods Admin > Add New > Custom Settings Page), для вывода полей которой пригодиться этот код:

$settings = pods('name_of_custom_settings_pod');
$some_field = $settings->field( 'name_of_field_from_settings' );


Надеюсь эта "инструкция" будет Вам полезна :)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
+1 к решению с помощью Pods от Павел Чесноков. Альтернатива - Advanced Custom Fields, правда галерея там кажется только в Pro версии, или любой адекватный options framework.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы