enabled()) { $columns['aksrt_user_level'] = __('用户等级', 'aksrt'); } return $columns; } public function render_column(string $output, string $column_name, int $user_id): string { if ($column_name !== 'aksrt_user_level' || !$this->enabled()) { return $output; } $level = Level::get_level($user_id); $icon = $this->render_badge($level); return '' . '' . $icon . '' . esc_html(Level::get_level_name($level)) . '' . '' . esc_html((string) Level::get_integral($user_id)) . ' EXP' . ''; } public function sortable_columns(array $columns): array { if ($this->enabled()) { $columns['aksrt_user_level'] = 'aksrt_user_level'; } return $columns; } public function sort_users($query): void { if (!is_admin() || $query->get('orderby') !== 'aksrt_user_level') { return; } $query->set('meta_key', Level::META_INTEGRAL); $query->set('orderby', 'meta_value_num'); } public function add_row_action(array $actions, \WP_User $user): array { if ($this->enabled() && $this->can_manage((int) $user->ID)) { $url = get_edit_user_link((int) $user->ID); if ($url) { $actions['aksrt_edit_level'] = '' . esc_html__('调整等级经验', 'aksrt') . ''; } } return $actions; } public function render_section(\WP_User $user): void { if (!$this->enabled()) { return; } $progress = Level::get_progress((int) $user->ID); $can_manage = $this->can_manage((int) $user->ID); ?>

enabled() || !$this->can_manage($user_id) || !isset($_POST['aksrt_user_level_nonce'])) { return; } $nonce = sanitize_text_field(wp_unslash((string) $_POST['aksrt_user_level_nonce'])); if (!wp_verify_nonce($nonce, 'aksrt_user_level_admin_' . $user_id)) { return; } $integral = max(0, (int) ($_POST['aksrt_level_integral'] ?? 0)); $level = max(1, min(Level::settings()['max'], (int) ($_POST['aksrt_user_level'] ?? 1))); update_user_meta($user_id, Level::META_INTEGRAL, $integral); update_user_meta($user_id, Level::META_LEVEL, $level); } private function render_badge(int $level): string { $name = Level::get_level_name($level); $icon = Level::get_level_icon_url($level); if ($icon !== '') { return '' . esc_attr($name) . ''; } return 'LV' . esc_html((string) $level) . ''; } }