wp_create_nonce('wp_rest'), ]); // 首先注册并加载脚本 /* wp_register_script('auto-relogin', get_template_directory_uri() . '/static/js/auto-relogin.js', array('jquery'), '1.0', true); wp_enqueue_script('auto-relogin'); wp_localize_script('auto-relogin', 'autoReloginObj', array( 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('auto_relogin_nonce') )); */ } add_action('wp_enqueue_scripts', 'story321_scripts'); // 确保在管理后台也加载nonce add_action('admin_enqueue_scripts', 'story321_scripts'); if (is_admin()) { // 添加设置菜单 add_action('admin_menu', function() { add_options_page( 'AI Generator Settings', 'AI Generator Settings', 'manage_options', 'story321_settings', 'story321_setting_page' ); }); } function story321_register_settings() { register_setting('story321-group', 'story321_email', array( 'type' => 'string', 'sanitize_callback' => 'sanitize_email', )); register_setting('story321-group', 'story321_token', array( 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field', )); register_setting('story321-group', 'story321_password', array( 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field', )); register_setting('story321-group', 'story321_member_point', array( 'type' => 'integer', 'sanitize_callback' => 'absint', )); register_setting('story321-group', 'story321_point', array( 'type' => 'integer', 'sanitize_callback' => 'absint', )); register_setting('story321-group', 'story321_last_login', array( 'type' => 'integer', 'sanitize_callback' => 'absint', )); } add_action( 'admin_init', 'story321_register_settings' ); function story321_check_login_status() { $last_login = get_option('story321_last_login'); $current_time = time(); if (get_option('story321_token') && $last_login && ($current_time - $last_login > 3600)) { // 在页面底部加载自动重新登录脚本 add_action('admin_footer', 'story321_enqueue_auto_relogin'); } } function story321_enqueue_auto_relogin() { // 确保jQuery已加载 wp_enqueue_script('jquery'); // 注册并加载自动重新登录脚本 wp_register_script( 'auto-relogin', plugins_url('static/js/auto-relogin.js', __FILE__), array('jquery'), '1.0', true // 设置为true确保在页面底部加载 ); // 本地化脚本,传递必要的数据 wp_localize_script('auto-relogin', 'autoReloginObj', array( 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('auto_relogin_nonce'), 'plugin_loaded' => 'true' )); // 加载脚本 wp_enqueue_script('auto-relogin'); } add_action('admin_init', 'story321_check_login_status'); function story321_setting_page() { wp_enqueue_script( 'cloud-login', plugins_url('static/js/cloud-login.js', __FILE__), array('jquery'), '1.0', true ); wp_localize_script('cloud-login', 'cloudLoginObj', array( 'nonce' => wp_create_nonce('story321_cloud_login_nonce'), 'ajaxurl' => admin_url('admin-ajax.php') )); wp_localize_script('disconnect', 'disconnectObj', array( 'nonce' => wp_create_nonce('story321_disconnect_action_nonce'), 'ajaxurl' => admin_url('admin-ajax.php') )); ?>

.

✅

[ 'username' => get_option('story321_email'), 'password' => get_option('story321_password') ] ]); if (is_wp_error($response)) { wp_send_json_error('连接服务器失败'); } $body = json_decode($response['body'], true); if (isset($body['token'])) { // 保存用户信息到选项 update_option('story321_token', $body['token']); update_option('story321_last_login', time()); update_option('story321_member_point', $body['member_point'] ?? 0); update_option('story321_point', $body['point'] ?? 0); wp_send_json_success(); } else { wp_send_json_error($body['message'] ?? '登录失败'); } });