Files
wordpress-theme-aksrt/templates/parts/submit/featured.php
T
kate522 51a591e2b9 feat(submit): add video cover picker with playable video preview
Featured video preview now renders a real DPlayer (video-url/video-pic)
like the reference theme instead of a static image, so the cover video
plays on the submit page. Top-right bar gains the video-cover button
shown only when a video cover is loaded; backend honors pic_id and no
longer deletes the thumbnail before cover validation. Drop dead i18n
keys and data-can-* attributes.
2026-09-05 23:41:22 +08:00

70 lines
2.9 KiB
PHP

<?php
/**
* Cover featured editor box.
*
* @var array $ctx
* @package AKSRT
*/
defined('ABSPATH') || exit;
if (empty($ctx['settings']['allow_cover'])) {
return;
}
if (empty($ctx['can_cover_image']) && empty($ctx['can_cover_slide']) && empty($ctx['can_cover_video'])) {
return;
}
$args = $ctx['featured_args'] ?? [];
$type = (string) ($args['type'] ?? '');
$data = $args['data'] ?? [];
$can_image = !empty($ctx['can_cover_image']);
$can_slide = !empty($ctx['can_cover_slide']);
$can_video = !empty($ctx['can_cover_video']);
?>
<div class="featured-edit<?php echo $type !== '' ? ' featured-loaded ' . esc_attr($type) : ''; ?>"
data-featured-args="<?php echo esc_attr(wp_json_encode($args)); ?>">
<div class="featured-preview" data-featured-preview>
<?php if ($type === 'image' && !empty($data['url'])) : ?>
<img src="<?php echo esc_url((string) $data['url']); ?>" alt="">
<?php elseif ($type === 'slide' && is_array($data) && !empty($data[0]['url'])) : ?>
<img src="<?php echo esc_url((string) $data[0]['url']); ?>" alt="">
<span class="featured-type-badge"><i class="fa fas fa-image"></i></span>
<?php elseif ($type === 'video') : ?>
<div class="new-dplayer dplayer-scale-height" style="--scale-height:50%;"
video-url="<?php echo esc_url((string) ($data['url'] ?? '')); ?>"
video-pic="<?php echo esc_url((string) ($data['pic'] ?? '')); ?>">
<div class="graphic" style="padding-bottom:50%;">
<div class="abs-center text-center"><i class="fa fas fa-play-circle fa-4x muted-3-color opacity5" aria-hidden="true"></i></div>
</div>
</div>
<span class="featured-type-badge"><i class="fa fas fa-video"></i></span>
<?php endif; ?>
</div>
<div class="btns-full flex ac jc">
<?php if ($can_image) : ?>
<button type="button" class="but btn-image" data-featured-action="image">
<i class="fa fas fa-image"></i> <?php esc_html_e('图片', 'aksrt'); ?>
</button>
<?php endif; ?>
<?php if ($can_video) : ?>
<button type="button" class="but btn-video-pic" data-featured-action="video_pic">
<i class="fa fas fa-image"></i> <?php esc_html_e('设置视频首图封面', 'aksrt'); ?>
</button>
<?php endif; ?>
<?php if ($can_slide) : ?>
<button type="button" class="but btn-slide" data-featured-action="slide">
<i class="fa fas fa-image"></i> <?php esc_html_e('幻灯片', 'aksrt'); ?>
</button>
<?php endif; ?>
<?php if ($can_video) : ?>
<button type="button" class="but btn-video" data-featured-action="video">
<i class="fa fas fa-video"></i> <?php esc_html_e('视频', 'aksrt'); ?>
</button>
<?php endif; ?>
<button type="button" class="but c-red btn-delete" data-featured-action="close" <?php echo $type === '' ? 'hidden' : ''; ?>>
<i class="fa fas fa-trash-alt"></i> <?php esc_html_e('清除', 'aksrt'); ?>
</button>
</div>
<input type="hidden" name="featured_data" value="<?php echo esc_attr(wp_json_encode(['type' => $type, 'data' => $data])); ?>" data-featured-json>
</div>