В некоторых случаях необходимо, чтобы у записи было несколько миниатюр. Например, если запись это товар с несколькими изображениями. Добавим эту возможность при редактировании записи.
Плагин Multiple Featured Images
После установки плагина, необходимо регистрировать (в functions.php) каждую дополнительную миниатюру:
//Добавление дополнительной миниатюры
add_filter( 'kdmfi_featured_images', function( $featured_images ) {
$args = array(
'id' => 'featured-image-2',
'desc' => 'Your description here.',
'label_name' => 'Featured Image 2',
'label_set' => 'Set featured image 2',
'label_remove' => 'Remove featured image 2',
'label_use' => 'Set featured image 2',
'post_type' => array( 'post' )
);
$featured_images[] = $args;
return $featured_images;
});
Выводятся дополнительные миниатюры так:
kdmfi_the_featured_image( 'featured-image-2', 'full' );
Плагин Multiple Featured Images (10 000 скачиваний) не содержит лишнего кода, отлично подходит для случаев когда нам точно известно количество необходимых дополнительных миниатюр.
Плагин Featured Galleries
Сделать добавление дополнительных миниатюр в виде единой галереи (как в woocommerce) можно с помощью плагина Featured Galleries (4000 скачиваний)
После установки в редакторе записи появляется виджет справа, в него и добавляем миниатюры.
Выводятся изображения таким образом:
<?php $galleryArray = get_post_gallery_ids($post->ID); ?>
foreach ($galleryArray as $id) { ?>
<img src="<?php echo wp_get_attachment_image_url( $id, 'thumbnail' ); ?>">
<?php } ?>
thumbnail — задаем размер миниатюры.
Если нужно применить данную возможность для произвольных типов записей — нужно добавить функцию:
function add_featured_galleries_to_ctp( $post_types ) {
array_push($post_types, 'custom_post_type'); //array('post','page')
return $post_types;
}
add_filter('fg_post_types', 'add_featured_galleries_to_ctp' );
Был случай, когда в произвольных типах записей в админке не открывалось меню добавления изображений. Решил проблему следующим образом: отключил условие проверки на тип записи в файле featured-galleries/includes/controller.php (строка 51).
Условие — есть ли изображения галереи:
<?php $galleryArray = get_post_gallery_ids($post->ID); ?>
<?php if ( !empty($galleryArray) ): ?>
<h2>Галерея изображений</h2>
<?php foreach ($galleryArray as $id) { ?>
<a href="<?php echo wp_get_attachment_image_url( $id, 'full' ); ?>"><img src="<?php echo wp_get_attachment_image_url( $id, 'medium' ); ?>"></a>
<?php } ?>
<?php else: ?>
<?php the_post_thumbnail('medium'); ?>
<?php endif; ?>
Обнаружил момент, что при выборе изображений для галереи отсутствует стандартная фильтрация (или дополнительная) элементов медиабиблиотеки. Это исправляется следующей функцией:
function show_fg_sidebar( $show_sidebar ) {
return true; // ($show_sidebar comes in a false)
} add_filter( 'fg_show_sidebar', 'show_fg_sidebar' );
Этот плагин устарел, рекомендуется использовать аналогичный.
[site-socialshare]