Files
wordpress-theme-aksrt/tag.php
T
kate522 8aa116ec43 fix(theme): align reference layouts and restore passing contracts
Align homepage and category discovery, modern widgets, admin controls, quotes, and comments with the reference theme. Remove superseded paths and add rendering and behavior coverage. Update stale asset and finance contracts; all 760 Node tests and 139 widget assertions pass.
2026-10-29 19:16:03 +08:00

132 lines
4.9 KiB
PHP

<?php
/**
* Tag archive template.
*
* @package AKSRT
*/
defined('ABSPATH') || exit;
get_header();
$term = get_queried_object();
if (!$term instanceof WP_Term) {
get_footer();
return;
}
$archive_settings = class_exists('\AKSRT\Core\TermMeta')
? \AKSRT\Core\TermMeta::resolve_archive_settings($term)
: [
'header_style' => 'simple',
'show_sidebar' => true,
'show_cover' => false,
'show_desc' => !empty($term->description),
'cover_url' => '',
'description' => (string) $term->description,
];
$has_sidebar = function_exists('aksrt_archive_has_sidebar')
? aksrt_archive_has_sidebar(!empty($archive_settings['show_sidebar']))
: (!empty($archive_settings['show_sidebar']) && is_active_sidebar('tag_sidebar'));
$description = !empty($archive_settings['show_desc']) ? wp_kses_post((string) $archive_settings['description']) : '';
$header_style = (string) $archive_settings['header_style'];
$ajax_filter = !empty($archive_settings['filter_bar']);
$sort_state = function_exists('aksrt_archive_get_sort_state')
? aksrt_archive_get_sort_state((array) ($archive_settings['orderby_option'] ?? []))
: ['current' => 'date', 'links' => []];
$current_sort = $sort_state['current'];
$sort_links = $sort_state['links'];
$render_config = function_exists('aksrt_archive_get_render_config')
? aksrt_archive_get_render_config(['context' => 'tag'])
: ['context' => 'tag'];
$filter_groups = [];
if (!empty($archive_settings['ajax_category_enabled']) && function_exists('aksrt_archive_build_term_filter_group')) {
$group = aksrt_archive_build_term_filter_group('category', (array) ($archive_settings['ajax_category'] ?? []), __('分类', 'aksrt'));
if ($group !== []) {
$filter_groups[] = $group;
}
}
if (!empty($archive_settings['ajax_tag_enabled']) && function_exists('aksrt_archive_build_term_filter_group')) {
$group = aksrt_archive_build_term_filter_group('post_tag', (array) ($archive_settings['ajax_tag'] ?? []), __('标签', 'aksrt'));
if ($group !== []) {
$filter_groups[] = $group;
}
}
if (!empty($archive_settings['custom_filter_enabled']) && function_exists('aksrt_archive_build_custom_filter_groups')) {
$filter_groups = array_merge(
$filter_groups,
aksrt_archive_build_custom_filter_groups(
(array) ($archive_settings['custom_dimensions'] ?? []),
$archive_settings['custom_filter_keys'] ?? 'all'
)
);
}
if (function_exists('aksrt_archive_open_shell')) {
aksrt_archive_open_shell([
'main_class' => 'site-main container',
'has_sidebar' => $has_sidebar,
'top_fluid' => ['tag_top_fluid'],
'page_kind' => 'tag',
]);
}
?>
<?php if (function_exists('aksrt_archive_render_widget_zone')) { aksrt_archive_render_widget_zone(['tag_top_content']); } elseif (is_active_sidebar('tag_top_content')) { dynamic_sidebar('tag_top_content'); } ?>
<div class="content-main content-main--archive content-main--tag">
<?php if (function_exists('aksrt_breadcrumbs')) { aksrt_breadcrumbs(); } ?>
<?php
if (function_exists('aksrt_archive_render_term_header')) {
aksrt_archive_render_term_header([
'header_style' => $header_style,
'show_cover' => !empty($archive_settings['show_cover']),
'cover_url' => (string) ($archive_settings['cover_url'] ?? ''),
'post_count' => !empty($archive_settings['post_count']),
'title' => single_tag_title('', false),
'description' => $description,
'admin_path' => 'page-display/tag',
'admin_label' => __('标签页设置', 'aksrt'),
]);
}
?>
<?php
if (!empty($archive_settings['filter_bar']) && function_exists('aksrt_archive_render_filter_bar')) {
aksrt_archive_render_filter_bar([
'aria_label' => __('标签工具条', 'aksrt'),
'groups' => $filter_groups,
'sort_enabled' => !empty($archive_settings['orderby_enabled']),
'sort_current' => $current_sort,
'sort_links' => $sort_links,
'sort_labels' => class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::homepage_sort_labels() : [],
'sort_option' => (array) $archive_settings['orderby_option'],
]);
}
?>
<?php
if (function_exists('aksrt_archive_render_stream')) {
aksrt_archive_render_stream(null, $render_config, [
'page_kind' => 'tag',
'query_context' => 'archive',
'stream_class' => 'archive__ajax-wrap content-stream--archive content-stream--tag',
'empty_text' => __('该标签下暂无文章', 'aksrt'),
]);
}
?>
<?php if (function_exists('aksrt_archive_render_widget_zone')) { aksrt_archive_render_widget_zone(['tag_bottom_content']); } elseif (is_active_sidebar('tag_bottom_content')) { dynamic_sidebar('tag_bottom_content'); } ?>
</div>
<?php
if (function_exists('aksrt_archive_close_shell')) {
aksrt_archive_close_shell([
'has_sidebar' => $has_sidebar,
'bottom_fluid' => ['tag_bottom_fluid'],
]);
}
get_footer();