fix(frontend): keep asset and homepage filters in DOM
This commit is contained in:
@@ -40,6 +40,48 @@ if (!function_exists('aksrt_render_profile_pagination')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('aksrt_render_asset_pagination')) {
|
||||
/**
|
||||
* Render user asset pagination without URL state.
|
||||
*/
|
||||
function aksrt_render_asset_pagination(int $total_pages, int $current, string $asset): void {
|
||||
if ($total_pages <= 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
$current = max(1, min($total_pages, $current));
|
||||
$pages = array_values(array_unique(array_filter([
|
||||
1,
|
||||
$current - 1,
|
||||
$current,
|
||||
$current + 1,
|
||||
$total_pages,
|
||||
], static fn(int $page): bool => $page >= 1 && $page <= $total_pages)));
|
||||
sort($pages);
|
||||
|
||||
echo '<nav class="profile-pagination" aria-label="' . esc_attr__('分页', 'aksrt') . '">';
|
||||
if ($current > 1) {
|
||||
echo '<button type="button" class="page-numbers prev" data-aksrt-asset-page="' . (int) ($current - 1) . '" data-aksrt-asset-key="' . esc_attr($asset) . '"><span aria-hidden="true">‹</span><span class="screen-reader-text">' . esc_html__('上一页', 'aksrt') . '</span></button>';
|
||||
}
|
||||
$previous = 0;
|
||||
foreach ($pages as $page) {
|
||||
if ($previous > 0 && $page > $previous + 1) {
|
||||
echo '<span class="page-numbers dots">…</span>';
|
||||
}
|
||||
if ($page === $current) {
|
||||
echo '<span class="page-numbers current" aria-current="page">' . (int) $page . '</span>';
|
||||
} else {
|
||||
echo '<button type="button" class="page-numbers" data-aksrt-asset-page="' . (int) $page . '" data-aksrt-asset-key="' . esc_attr($asset) . '">' . (int) $page . '</button>';
|
||||
}
|
||||
$previous = $page;
|
||||
}
|
||||
if ($current < $total_pages) {
|
||||
echo '<button type="button" class="page-numbers next" data-aksrt-asset-page="' . (int) ($current + 1) . '" data-aksrt-asset-key="' . esc_attr($asset) . '"><span aria-hidden="true">›</span><span class="screen-reader-text">' . esc_html__('下一页', 'aksrt') . '</span></button>';
|
||||
}
|
||||
echo '</nav>';
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('aksrt_render_profile_empty')) {
|
||||
/**
|
||||
* 渲染空状态卡片
|
||||
|
||||
Reference in New Issue
Block a user