diff --git src/wp-admin/includes/plugin.php src/wp-admin/includes/plugin.php
index 7d804e1c66..c38dd832d3 100644
|
|
function activate_plugin( $plugin, $redirect = '', $network_wide = false, $silen |
557 | 557 | ob_start(); |
558 | 558 | wp_register_plugin_realpath( WP_PLUGIN_DIR . '/' . $plugin ); |
559 | 559 | $_wp_plugin_file = $plugin; |
| 560 | |
| 561 | if ( ! defined( 'WP_ADMIN' ) ) { |
| 562 | define( 'WP_ADMIN', true ); |
| 563 | } |
| 564 | |
560 | 565 | include_once( WP_PLUGIN_DIR . '/' . $plugin ); |
| 566 | |
| 567 | // Trigger key actions that are done on the plugin editor to cause the relevant plugin hooks to fire and potentially cause errors. |
| 568 | do_action( 'init' ); |
| 569 | do_action( 'admin_init' ); |
| 570 | |
561 | 571 | $plugin = $_wp_plugin_file; // Avoid stomping of the $plugin variable in a plugin. |
562 | 572 | |
563 | 573 | if ( ! $silent ) { |
diff --git src/wp-admin/plugin-editor.php src/wp-admin/plugin-editor.php
index 14d2b65039..c986824e6c 100644
|
|
if ( isset( $_REQUEST['plugin'] ) ) { |
46 | 46 | |
47 | 47 | if ( empty( $plugin ) ) { |
48 | 48 | if ( $file ) { |
49 | | $plugin = $file; |
| 49 | |
| 50 | // Locate the plugin for a given plugin file being edited. |
| 51 | $file_dirname = dirname( $file ); |
| 52 | foreach ( array_keys( $plugins ) as $plugin_candidate ) { |
| 53 | if ( $plugin_candidate === $file || ( '.' !== $file_dirname && dirname( $plugin_candidate ) === $file_dirname ) ) { |
| 54 | $plugin = $plugin_candidate; |
| 55 | break; |
| 56 | } |
| 57 | } |
| 58 | |
| 59 | // Fallback to the file as the plugins. |
| 60 | if ( empty( $plugin ) ) { |
| 61 | $plugin = $file; |
| 62 | } |
50 | 63 | } else { |
51 | 64 | $plugin = array_keys( $plugins ); |
52 | 65 | $plugin = $plugin[0]; |
… |
… |
if ( isset( $_REQUEST['action'] ) && 'update' === $_REQUEST['action'] ) { |
72 | 85 | fwrite($f, $newcontent); |
73 | 86 | fclose($f); |
74 | 87 | |
| 88 | if ( function_exists( 'opcache_invalidate' ) ) { |
| 89 | opcache_invalidate( $real_file, true ); |
| 90 | } |
| 91 | |
75 | 92 | $network_wide = is_plugin_active_for_network( $file ); |
76 | 93 | |
77 | 94 | // Deactivate so we can test it. |
… |
… |
if ( isset( $_REQUEST['action'] ) && 'update' === $_REQUEST['action'] ) { |
220 | 237 | <?php if (isset($_GET['a'])) : ?> |
221 | 238 | <div id="message" class="updated notice is-dismissible"><p><?php _e('File edited successfully.') ?></p></div> |
222 | 239 | <?php elseif (isset($_GET['phperror'])) : ?> |
223 | | <div id="message" class="updated"><p><?php _e('This plugin has been deactivated because your changes resulted in a <strong>fatal error</strong>.') ?></p> |
| 240 | <div id="message" class="notice notice-error"><p><?php _e('This plugin has been deactivated because your changes resulted in a <strong>fatal error</strong>.') ?></p> |
224 | 241 | <?php |
225 | 242 | if ( wp_verify_nonce( $_GET['_error_nonce'], 'plugin-activation-error_' . $file ) ) { |
226 | 243 | $iframe_url = add_query_arg( array( |