49 lines
1.9 KiB
PHP
49 lines
1.9 KiB
PHP
<?php
|
|
/**
|
|
* 图片画廊模板
|
|
*
|
|
* 用于文章内嵌画廊块或图片列表展示。
|
|
*
|
|
* @package AKSRT
|
|
* @since 5.0.0
|
|
*
|
|
* @var array $images 图片数组 [{src, alt, caption, width, height}]
|
|
* @var string $layout 布局: grid / masonry / carousel
|
|
* @var int $columns 列数 (default: 3)
|
|
* @var bool $lightbox 是否启用灯箱 (default: true)
|
|
*/
|
|
|
|
defined('ABSPATH') || exit;
|
|
|
|
$images = $args['images'] ?? [];
|
|
$layout = $args['layout'] ?? 'grid';
|
|
$columns = max(1, min(6, (int) ($args['columns'] ?? 3)));
|
|
$lightbox = $args['lightbox'] ?? true;
|
|
|
|
if (empty($images)) return;
|
|
?>
|
|
|
|
<div class="content-gallery content-gallery--<?php echo esc_attr($layout); ?>" style="--gallery-columns: <?php echo $columns; ?>;">
|
|
<?php foreach ($images as $index => $img) :
|
|
$src = $img['src'] ?? '';
|
|
$alt = $img['alt'] ?? '';
|
|
$caption = $img['caption'] ?? '';
|
|
if (!$src) continue;
|
|
?>
|
|
<figure class="content-gallery__item" data-index="<?php echo $index; ?>">
|
|
<a href="<?php echo esc_url($src); ?>"
|
|
class="content-gallery__link"
|
|
<?php echo $lightbox ? 'data-lightbox="gallery"' : ''; ?>
|
|
data-caption="<?php echo esc_attr($caption); ?>">
|
|
<img<?php echo aksrt_get_lazy_attr('lazy_posts_content', (string) $src, 'content-gallery__img', aksrt_get_lazy_thumb('lg')); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
|
|
alt="<?php echo esc_attr($alt); ?>"
|
|
width="<?php echo esc_attr($img['width'] ?? 800); ?>"
|
|
height="<?php echo esc_attr($img['height'] ?? 600); ?>">
|
|
</a>
|
|
<?php if ($caption) : ?>
|
|
<figcaption class="content-gallery__caption"><?php echo esc_html($caption); ?></figcaption>
|
|
<?php endif; ?>
|
|
</figure>
|
|
<?php endforeach; ?>
|
|
</div>
|