'GET', 'callback' => [$this, 'get_update_info'], 'permission_callback' => [$this, 'check_permission'], ]); register_rest_route(self::API_NAMESPACE, '/tools/update-check', [ 'methods' => 'POST', 'callback' => [$this, 'detect_update'], 'permission_callback' => [$this, 'check_permission'], ]); register_rest_route(self::API_NAMESPACE, '/tools/update-dismiss', [ 'methods' => 'POST', 'callback' => [$this, 'dismiss_update'], 'permission_callback' => [$this, 'check_permission'], ]); } public function get_update_info(): \WP_REST_Response { $theme = wp_get_theme(); $info = [ 'current_version' => $theme->get('Version') ?: '0.0.0', 'name' => $theme->get('Name') ?: 'AKSRT', 'update_available'=> false, 'remote_version' => '', 'download_url' => '', 'changelog' => '', 'last_check' => 0, 'dismissed' => '', ]; if (class_exists('\AKSRT\Core\UpdateChecker')) { $stored = \AKSRT\Core\UpdateChecker::get_instance()->get_update_info(); if (is_array($stored)) { $info = array_merge($info, $stored); } } $info['dismissed'] = (string) get_user_meta(get_current_user_id(), 'aksrt_dismissed_update', true); return $this->success(['data' => $info]); } public function detect_update(): \WP_REST_Response { if (!class_exists('\AKSRT\Core\UpdateChecker')) { return $this->error(__('更新检查器不可用', 'aksrt'), 500); } \AKSRT\Core\UpdateChecker::get_instance()->do_check(); $stored = \AKSRT\Core\UpdateChecker::get_instance()->get_update_info(); return $this->success([ 'message' => __('已完成更新检测', 'aksrt'), 'data' => is_array($stored) ? $stored : [], ]); } public function dismiss_update(\WP_REST_Request $request): \WP_REST_Response { $params = $this->get_json_params($request); $version = sanitize_text_field((string) ($params['version'] ?? '')); if ($version === '') { return $this->error(__('缺少版本号', 'aksrt'), 422); } update_user_meta(get_current_user_id(), 'aksrt_dismissed_update', $version); return $this->success([ 'message' => __('已忽略此版本提醒', 'aksrt'), 'data' => ['version' => $version], ]); } }