如何实现私有WordPress插件从免费版手动升级至专业版?
WordPress免费插件转专业版覆盖安装实现方案
核心前提
专业版与免费版必须共享完全一致的插件目录名和主插件文件名(比如都用my-awesome-plugin/my-awesome-plugin.php),同时专业版的版本号必须高于免费版,这样WordPress才会识别为同一插件的更新,上传时触发覆盖流程。
具体实现步骤
1. 统一插件基础标识
在专业版的主插件文件头部,保持和免费版一致的Plugin Name、Text Domain,仅将版本号设为更高值:
/* Plugin Name: My Awesome Plugin Plugin URI: https://your-pro-site.com/ Description: Full-featured pro version of My Awesome Plugin Version: 2.0.0-pro Author: Your Name Text Domain: my-awesome-plugin Domain Path: /languages */
2. 编写免费到专业版的升级激活逻辑
在专业版主文件中添加激活钩子,处理数据迁移、旧功能替换与新功能启用:
register_activation_hook( __FILE__, 'my_plugin_pro_activation' ); function my_plugin_pro_activation() { // 检测是否存在免费版遗留数据 $free_version = get_option( 'my_plugin_free_version' ); if ( $free_version ) { // 迁移免费版设置到专业版选项 $free_settings = get_option( 'my_plugin_free_settings' ); if ( $free_settings ) { update_option( 'my_plugin_pro_settings', $free_settings ); // 可选:清理旧选项避免冗余 delete_option( 'my_plugin_free_settings' ); } // 标记升级完成状态 update_option( 'my_plugin_upgraded_to_pro', true ); } // 注册专业版专属功能 my_plugin_pro_register_features(); } function my_plugin_pro_register_features() { // 示例:添加专业版专属自定义字段 add_action( 'add_meta_boxes', 'my_plugin_pro_add_meta_boxes' ); // 其他专业功能(如高级短代码、API集成等)注册逻辑... } function my_plugin_pro_add_meta_boxes() { add_meta_box( 'my_plugin_pro_meta', 'Pro Exclusive Settings', 'my_plugin_pro_meta_box_callback', 'post' ); } function my_plugin_pro_meta_box_callback( $post ) { $value = get_post_meta( $post->ID, '_my_plugin_pro_setting', true ); echo '<input type="text" name="_my_plugin_pro_setting" value="' . esc_attr( $value ) . '" class="widefat" />'; }
3. 禁用免费版官方更新提示
防止用户误切换回免费版,在专业版中加入禁用更新的过滤逻辑:
add_filter( 'site_transient_update_plugins', 'my_plugin_pro_disable_free_updates' ); function my_plugin_pro_disable_free_updates( $transient ) { if ( isset( $transient->response['my-awesome-plugin/my-awesome-plugin.php'] ) ) { // 移除WordPress仓库中免费版的更新提示 unset( $transient->response['my-awesome-plugin/my-awesome-plugin.php'] ); } return $transient; }
4. 专业版安装包打包规范
- 保持目录结构与免费版一致,仅替换核心文件、新增
pro/等专属目录 - 确保所有专业版依赖文件完整,无缺失
- 在
readme.txt中明确标注为专业版,避免与免费版混淆
关键注意事项
- 备份提示:在专业版下载页面强制提醒用户备份网站数据与免费版文件
- 测试验证:在本地环境多次测试覆盖安装流程,确保数据迁移与功能正常
- 权限兼容:专业版文件权限需与免费版保持一致,避免出现功能异常
- 版本兼容:专业版需完全兼容免费版的数据结构,防止迁移失败
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

