feat(widgets): categories tree/cover + hot metric meta + tag scale

Categories gain hierarchical children, optional thumb/desc; hot posts
show orderby-aware metrics with lazy thumbs; tag cloud can scale size.
This commit is contained in:
2026-07-21 10:20:07 +08:00
parent e925149bd1
commit 842ff488ce
3 changed files with 124 additions and 19 deletions
+23 -4
View File
@@ -71,27 +71,46 @@ class HotPostsWidget extends \WP_Widget {
return '';
}
$show_thumb = !empty($instance['show_thumb']);
$order_by = sanitize_key((string) ($instance['order_by'] ?? 'views'));
$placeholder = get_template_directory_uri() . '/assets/img/placeholder.svg';
ob_start();
$index = $start;
while ($query->have_posts()) {
$query->the_post();
$index++;
$rank_class = $index <= 3 ? ' rank-top' : '';
$views = (int) get_post_meta(get_the_ID(), 'aksrt_post_views', true);
$pid = get_the_ID();
if ($order_by === 'comments') {
$metric = (int) get_comments_number($pid);
$metric_icon = 'fa-comment-o';
} elseif ($order_by === 'likes') {
$metric = function_exists('aksrt_get_post_likes') ? (int) aksrt_get_post_likes($pid) : (int) get_post_meta($pid, '_aksrt_like_count', true);
$metric_icon = 'fa-heart';
} elseif ($order_by === 'favorites') {
$metric = (int) get_post_meta($pid, '_aksrt_favorite_count', true);
$metric_icon = 'fa-star';
} elseif ($order_by === 'downloads') {
$metric = (int) get_post_meta($pid, '_aksrt_res_download_count', true);
$metric_icon = 'fa-download';
} else {
$metric = (int) get_post_meta($pid, 'aksrt_post_views', true);
$metric_icon = 'fa-eye';
}
$metric_txt = function_exists('aksrt_format_number') ? aksrt_format_number($metric) : (string) $metric;
?>
<div class="hot-post-item ajax-item <?php echo esc_attr($rank_class); ?>">
<span class="hot-post-item__rank"><?php echo esc_html((string) $index); ?></span>
<?php if ($show_thumb) :
$thumb = get_the_post_thumbnail_url(get_the_ID(), 'thumbnail');
$thumb = get_the_post_thumbnail_url($pid, 'thumbnail');
?>
<a class="hot-post-item__thumb<?php echo $thumb ? '' : ' is-empty'; ?>" href="<?php the_permalink(); ?>">
<?php if ($thumb) : ?><img src="<?php echo esc_url($thumb); ?>" alt="" loading="lazy" /><?php endif; ?>
<?php if ($thumb) : ?><img class="aksrt-lazy lazyload" data-src="<?php echo esc_url($thumb); ?>" src="<?php echo esc_url($placeholder); ?>" alt="" loading="lazy" /><?php endif; ?>
</a>
<?php endif; ?>
<div class="hot-post-item__info">
<a href="<?php the_permalink(); ?>" class="hot-post-item__title"><?php the_title(); ?></a>
<div class="hot-post-item__meta">
<span><i class="fas fa-eye" aria-hidden="true"></i> <?php echo esc_html(function_exists('aksrt_format_number') ? aksrt_format_number($views) : (string) $views); ?></span>
<span><i class="fa <?php echo esc_attr($metric_icon); ?>" aria-hidden="true"></i> <?php echo esc_html((string) $metric_txt); ?></span>
<span class="hot-post-item__time"><?php echo esc_html(human_time_diff(get_the_time('U'), current_time('timestamp')) . __('前', 'aksrt')); ?></span>
</div>
</div>