diff --git a/wp-admin/includes/plugin.php b/wp-admin/includes/plugin.php index 04e7a1774e..c63ac81099 100644 --- a/wp-admin/includes/plugin.php +++ b/wp-admin/includes/plugin.php @@ -482,10 +482,6 @@ function activate_plugin( $plugin, $redirect = '', $network_wide = false) { wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), $redirect)); // we'll override this later if the plugin can be included without fatal error ob_start(); include(WP_PLUGIN_DIR . '/' . $plugin); - if ( ob_get_length() > 0 ) { - $output = ob_get_clean(); - return new WP_Error('unexpected_output', __('The plugin generated unexpected output.'), $output); - } do_action( 'activate_plugin', trim( $plugin) ); if ( $network_wide ) { $current[$plugin] = time(); @@ -497,6 +493,10 @@ function activate_plugin( $plugin, $redirect = '', $network_wide = false) { } do_action( 'activate_' . trim( $plugin ) ); do_action( 'activated_plugin', trim( $plugin) ); + if ( ob_get_length() > 0 ) { + $output = ob_get_clean(); + return new WP_Error('unexpected_output', __('The plugin generated unexpected output.'), $output); + } ob_end_clean(); } diff --git a/wp-admin/plugins.php b/wp-admin/plugins.php index 155eb262ff..eff0c22fa4 100644 --- a/wp-admin/plugins.php +++ b/wp-admin/plugins.php @@ -334,15 +334,14 @@ if ( !empty($invalid) ) unexpected output.'), $_GET['charsout']); + if ( isset($_GET['charsout']) ) + $errmsg = sprintf(__('The plugin generated %d characters of unexpected output during activation. If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.'), $_GET['charsout']); else $errmsg = __('Plugin could not be activated because it triggered a fatal error.'); - ?>

+ if ( !isset($_GET['charsout']) && wp_verify_nonce($_GET['_error_nonce'], 'plugin-activation-error_' . $plugin) ) { ?>