get_charset_collate(); // SEO日志表 $table_name = $wpdb->prefix . 'ai_seo_logs'; $sql = "CREATE TABLE $table_name ( id mediumint(9) NOT NULL AUTO_INCREMENT, post_id bigint(20) NOT NULL, action varchar(50) NOT NULL, old_value text, new_value text, user_id bigint(20) NOT NULL, created_at datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY post_id (post_id), KEY user_id (user_id), KEY created_at (created_at) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); // 更新数据库版本 update_option('ai_seo_db_version', '1.0'); } /** * 设置默认选项 * 自动检测并支持所有公开的文章类型 */ private static function set_default_options() { // 获取所有公开的文章类型作为默认支持类型 $all_post_types = get_post_types(array('public' => true), 'names'); $default_supported_types = !empty($all_post_types) ? $all_post_types : array('post', 'page'); $default_options = array( 'ai_seo_api_key' => '', 'ai_seo_api_url' => '', 'ai_seo_auto_generate' => false, 'ai_seo_enable_logging' => true, 'ai_seo_cache_duration' => 3600, // 1小时 'ai_seo_max_retries' => 3, 'ai_seo_timeout' => 30, 'ai_seo_supported_post_types' => $default_supported_types, 'ai_seo_title_template' => '{title}', 'ai_seo_description_template' => '{description}', 'ai_seo_keywords_template' => '{keywords}', 'ai_seo_enable_frontend' => true, 'ai_seo_enable_admin_notices' => true ); foreach ($default_options as $option_name => $default_value) { if (get_option($option_name) === false) { add_option($option_name, $default_value); } } } /** * 创建必要的目录 */ private static function create_directories() { $upload_dir = wp_upload_dir(); $ai_seo_dir = $upload_dir['basedir'] . '/ai-seo'; if (!file_exists($ai_seo_dir)) { wp_mkdir_p($ai_seo_dir); // 创建.htaccess文件保护目录 $htaccess_content = "Order deny,allow\nDeny from all"; file_put_contents($ai_seo_dir . '/.htaccess', $htaccess_content); // 创建index.php文件 file_put_contents($ai_seo_dir . '/index.php', 'query( "DELETE FROM {$wpdb->usermeta} WHERE meta_key LIKE 'ai_seo_%'" ); } /** * 删除文章meta数据 */ private static function remove_post_meta() { global $wpdb; $meta_keys = array( '_ai_seo_title', '_ai_seo_description', '_ai_seo_keywords', '_ai_seo_generated_at', '_ai_seo_last_updated' ); foreach ($meta_keys as $meta_key) { $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->postmeta} WHERE meta_key = %s", $meta_key ) ); } } /** * 删除数据库表 */ private static function drop_database_tables() { global $wpdb; $table_name = $wpdb->prefix . 'ai_seo_logs'; $wpdb->query("DROP TABLE IF EXISTS $table_name"); } /** * 检查系统要求 */ public static function check_requirements() { $requirements = array( 'php_version' => '7.4', 'wp_version' => '5.0', 'extensions' => array('curl', 'json') ); $errors = array(); // 检查PHP版本 if (version_compare(PHP_VERSION, $requirements['php_version'], '<')) { $errors[] = sprintf( '需要PHP版本 %s 或更高,当前版本:%s', $requirements['php_version'], PHP_VERSION ); } // 检查WordPress版本 global $wp_version; if (version_compare($wp_version, $requirements['wp_version'], '<')) { $errors[] = sprintf( '需要WordPress版本 %s 或更高,当前版本:%s', $requirements['wp_version'], $wp_version ); } // 检查PHP扩展 foreach ($requirements['extensions'] as $extension) { if (!extension_loaded($extension)) { $errors[] = sprintf('需要PHP扩展:%s', $extension); } } return $errors; } /** * 数据库升级 */ public static function upgrade_database() { $current_version = get_option('ai_seo_db_version', '0'); if (version_compare($current_version, '1.0', '<')) { self::create_database_tables(); } // 未来版本的升级逻辑可以在这里添加 } /** * 创建示例内容 */ public static function create_sample_content() { // 可以在这里创建示例文章或页面 // 用于演示插件功能 } /** * 导入默认设置 */ public static function import_default_settings() { $settings_file = AI_SEO_PLUGIN_PATH . 'config/default-settings.json'; if (file_exists($settings_file)) { $settings = json_decode(file_get_contents($settings_file), true); if ($settings) { foreach ($settings as $key => $value) { update_option($key, $value); } } } } } // 注册激活、停用和卸载钩子 register_activation_hook(__FILE__, array('AiSeoInstaller', 'activate')); register_deactivation_hook(__FILE__, array('AiSeoInstaller', 'deactivate')); register_uninstall_hook(__FILE__, array('AiSeoInstaller', 'uninstall')); // 检查数据库版本并升级 add_action('plugins_loaded', function() { $current_version = get_option('ai_seo_db_version', '0'); if (version_compare($current_version, '1.0', '<')) { AiSeoInstaller::upgrade_database(); } }); // 显示激活通知 add_action('admin_notices', function() { if (get_transient('ai_seo_activation_notice')) { echo '
'; echo '

AI SEO Generator 插件已成功激活!请前往 设置页面 配置API密钥。

'; echo '
'; delete_transient('ai_seo_activation_notice'); } }); ?>