| 
       
	首先,我们要引入一个Wordpress核心文件: 
	
		- 
			
 
		- 
			if ( !function_exists( 'wp_get_current_user' ) ) {
 
		- 
			 
 
		- 
			    if ( !file_exists(ABSPATH.'wp-includes/pluggable.php') ) require_once( ABSPATH.'wp-includes/pluggable.php' );
 
		- 
			 
 
		- 
			    require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
 
		- 
			 
 
		- 
			}
 
	 
 
	然后,我们需要在插件中定义Wordpress后台初始化Hook函数,以禁用插件自身,以免网站报错,在这个函数中,我们需要判断当前用户是否可以启用插件,如果可以,那么与该插件冲突的插件是否已经被启用了,如果与该插件冲突的插件被启用了,就报个错误,禁用自身,如果与该插件冲突的是一个该插件的Lite版本,那么可以干脆的禁用掉它,下面以自制插件WP Youku(相当于Lite版本)和WP Youku Pro(相当于Pro版本)来说明问题: 
	在插件WP Youku中写: 
	
		- 
			add_action( 'admin_init', 'wp_youku_deactivate' );
 
		- 
			function wp_youku_deactivate() {
 
		- 
			 
 
		- 
			    if ( current_user_can( 'activate_plugins' ) ) {
 
		- 
			        if( is_plugin_active( 'wp-youku-pro/wp-youku-pro.php' ) ) {
 
		- 
			            add_action( 'admin_notices', 'wp_youku_admin_notice' );
 
		- 
			            deactivate_plugins( plugin_basename( __FILE__ ) );
 
		- 
			            
 
		- 
			            
 
		- 
			        }
 
		- 
			    }
 
		- 
			 
 
		- 
			}
 
		- 
			 
 
		- 
			 
 
		- 
			function wp_youku_admin_notice() {
 
		- 
			 
 
		- 
			   echo '<div class="error"><p><strong>WP Youku</strong> 未能启用,可能的原因是您已经启用了<strong>WP Youku Pro</strong>.</p></div>';
 
		- 
			   
 
		- 
			   
 
		- 
			 
 
		- 
			}
 
	 
 
	在插件WP Youku Pro中写: 
	
		- 
			add_action( 'admin_init', 'wp_youku_pro_deactivate' );
 
		- 
			function wp_youku_pro_deactivate() {
 
		- 
			 
 
		- 
			    if ( current_user_can( 'activate_plugins' ) ) {
 
		- 
			        if( is_plugin_active( 'wp-youku/wp-youku.php' ) ) {
 
		- 
			             add_action( 'admin_notices', 'wp_youku_pro_admin_notice' );
 
		- 
			            
 
		- 
			            deactivate_plugins('wp-youku/wp-youku.php' );
 
		- 
			            
 
		- 
			            
 
		- 
			        }
 
		- 
			    }
 
		- 
			 
 
		- 
			}
 
		- 
			 
 
		- 
			function wp_youku_pro_admin_notice() {
 
		- 
			 
 
		- 
			  echo '<div class="error"><p>检测到您已经启用了<strong>WP Youku</strong>, <strong>WP Youku Pro</strong>已经禁用了它,请刷新本页面.</p></div>';
 
		- 
			  
 
		- 
			  if ( isset( $_GET['activate'] ) ) unset( $_GET['activate'] );
 
		- 
			 
 
		- 
			}
 
	 
 
	  
	这样,在先启用Lite版本,后启用Pro版本的时候,会在自动启用Pro版本并禁用自身之后给出提示;在先启用Pro版本,后启用Lite版本的时候,Lite版本的启用动作将是无效的,并给出一个提示: 
	 
	
		WordPress插件冲突的解决办法 
 
	以上是针对类型的Wordpress插件冲突的解决方案,如果是一般性的插件冲突,最后在禁用自身后给出友好的提示即可。 
      
      (责任编辑:最模板) |