feat(users): medal auto-grant + aksrt_get_user_name chrome

Add AKSRT_User_Badges::auto_evaluate on login for get_type metrics,
introduce aksrt_get_user_name (auth→wear medal→level→follow order),
wire single author bar/card, and document transfer/withdraw default-closed
semantics on capabilities page. audit errors=0.
This commit is contained in:
2026-07-17 01:12:09 +08:00
parent 1b0eed6ef7
commit b4d04ae346
5 changed files with 299 additions and 16 deletions
+27 -10
View File
@@ -48,10 +48,23 @@ $aksrt_msg_url = function_exists('aksrt_get_messages_page_url') ? aksrt_get_mess
$login_url = function_exists('aksrt_get_login_url') ? aksrt_get_login_url() : wp_login_url(get_permalink());
$is_self = is_user_logged_in() && get_current_user_id() === $author_id;
// Identity chips: VIP + verify/level/badges (shared helper).
$identity_chips = function_exists('aksrt_render_user_identity_chips')
? aksrt_render_user_identity_chips($author_id, 'author')
: '';
// Identity: prefer aksrt_get_user_name (Zibll order); fall back to chips.
$identity_chips = '';
$name_html = '';
if (function_exists('aksrt_get_user_name')) {
$name_html = aksrt_get_user_name([
'id' => $author_id,
'class' => 'name flex ac flex1',
'name_class' => '',
'vip' => true,
'medal' => true,
'auth' => true,
'level' => true,
'follow' => false,
]);
} elseif (function_exists('aksrt_render_user_identity_chips')) {
$identity_chips = aksrt_render_user_identity_chips($author_id, 'author');
}
?>
<div class="<?php echo esc_attr($classes); ?>">
@@ -67,12 +80,16 @@ $identity_chips = function_exists('aksrt_render_user_identity_chips')
</a>
<div class="user-right flex flex1 ac jsb ml10">
<div class="flex1">
<span class="name flex ac flex1">
<a class="display-name text-ellipsis" href="<?php echo esc_url($author_url); ?>"><?php echo esc_html($author_name); ?></a>
<?php if ($identity_chips !== '') : ?>
<?php echo $identity_chips; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
<?php endif; ?>
</span>
<?php if ($name_html !== '') : ?>
<?php echo $name_html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
<?php else : ?>
<span class="name flex ac flex1">
<a class="display-name text-ellipsis" href="<?php echo esc_url($author_url); ?>"><?php echo esc_html($author_name); ?></a>
<?php if ($identity_chips !== '') : ?>
<?php echo $identity_chips; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
<?php endif; ?>
</span>
<?php endif; ?>
<div class="px12-sm muted-2-color text-ellipsis">
<?php if ($show_time) : ?>
<span class="icon-circle" title="<?php echo esc_attr($abs_fmt); ?>" data-toggle="tooltip"><?php echo esc_html($time_text); ?></span>