';
// 顶部:年份标题 + 四角导航上排
$out .= '
';
/* 🔴 年份标题同样**不能**过 number_format_i18n(会变「2,025」)。
* 而且要输出纯数字,与 JS 切年后的 `String(year)` 完全一致 ——
* 两边不一致就是「首屏 2,025、点一下 2025」。 */
$out .= '
'
. esc_html((string) $year) . '
';
$out .= ''
. sprintf(
/* translators: %s: 文章数 */
esc_html__('共 %s 篇', 'kratos'),
esc_html(number_format_i18n($data['years'][$year]['count']))
)
. '';
if ($opt['nav']) {
$out .= yang_archives_render_nav($year, $data['order'], 'top');
}
$out .= '';
// 列表主体
$out .= '
';
$out .= yang_archives_render_year($data['years'][$year], $year, $opt['month']);
$out .= '
';
// 底部导航(四角的下排)
if ($opt['nav']) {
$out .= '';
}
$out .= '';
$out .= '
';
return $out;
}
/* WP 的 shortcode 标签是**大小写不敏感**的(它内部统一 strtolower),
* 所以注册小写 `archives` 就能同时匹配 [Archives] / [ARCHIVES] / [archives]。
* 这里按 WP 惯例注册小写。 */
add_shortcode('archives', 'yang_archives_shortcode');