if ( !empty($redirect) )
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_once(WP_PLUGIN_DIR . '/' . $plugin);
+ wp_register_plugin_realpath( WP_PLUGIN_DIR . '/' . $plugin );
+ include_once( WP_PLUGIN_DIR . '/' . $plugin );
if ( ! $silent ) {
/**
- * Fires before a plugin is activated in activate_plugin() when the $silent parameter is false.
+ * Fires before a plugin is activated.
+ *
+ * If a plugin is silently activated (such as during an update),
+ * this hook does not fire.
*
* @since 2.9.0
*
do_action( 'activate_plugin', $plugin, $network_wide );
/**
- * Fires before a plugin is activated in activate_plugin() when the $silent parameter is false.
+ * Fires as a specific plugin is being deactivated.
+ *
+ * This hook is the "deactivation" hook used internally by
+ * register_deactivation_hook(). The dynamic portion of the
+ * hook name, $plugin. refers to the plugin basename.
*
- * The action concatenates the 'activate_' prefix with the $plugin value passed to
- * activate_plugin() to create a dynamically-named action.
+ * If a plugin is silently activated (such as during an update),
+ * this hook does not fire.
*
* @since 2.0.0
*
if ( ! $silent ) {
/**
- * Fires after a plugin has been activated in activate_plugin() when the $silent parameter is false.
+ * Fires after a plugin has been activated.
+ *
+ * If a plugin is silently activated (such as during an update),
+ * this hook does not fire.
*
* @since 2.9.0
*
if ( ! $silent ) {
/**
- * Fires for each plugin being deactivated in deactivate_plugins(), before deactivation
- * and when the $silent parameter is false.
+ * Fires before a plugin is deactivated.
+ *
+ * If a plugin is silently deactivated (such as during an update),
+ * this hook does not fire.
*
* @since 2.9.0
*
if ( ! $silent ) {
/**
- * Fires for each plugin being deactivated in deactivate_plugins(), after deactivation
- * and when the $silent parameter is false.
+ * Fires as a specific plugin is being deactivated.
*
- * The action concatenates the 'deactivate_' prefix with the plugin's basename
- * to create a dynamically-named action.
+ * This hook is the "deactivation" hook used internally by
+ * register_deactivation_hook(). The dynamic portion of the
+ * hook name, $plugin. refers to the plugin basename.
+ *
+ * If a plugin is silently deactivated (such as during an update),
+ * this hook does not fire.
*
* @since 2.0.0
*
do_action( 'deactivate_' . $plugin, $network_deactivating );
/**
- * Fires for each plugin being deactivated in deactivate_plugins(), after deactivation
- * and when the $silent parameter is false.
+ * Fires after a plugin is deactivated.
+ *
+ * If a plugin is silently deactivated (such as during an update),
+ * this hook does not fire.
*
* @since 2.9.0
*
- * @param string $plugin Plugin path to main plugin file with plugin data.
+ * @param string $plugin Plugin basename.
* @param bool $network_deactivating Whether the plugin is deactivated for all sites in the network
- * or just the current site. Multisite only. Default is false.
+ * or just the current site. Multisite only. Default false.
*/
do_action( 'deactivated_plugin', $plugin, $network_deactivating );
}
unset($uninstallable_plugins);
define('WP_UNINSTALL_PLUGIN', $file);
+ wp_register_plugin_realpath( WP_PLUGIN_DIR . '/' . dirname( $file ) );
include WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php';
return true;
update_option('uninstall_plugins', $uninstallable_plugins);
unset($uninstallable_plugins);
+ wp_register_plugin_realpath( WP_PLUGIN_DIR . '/' . $file );
include WP_PLUGIN_DIR . '/' . $file;
add_action( 'uninstall_' . $file, $callable );
* @param string $icon_url The url to the icon to be used for this menu.
* * Pass a base64-encoded SVG using a data URI, which will be colored to match the color scheme.
* This should begin with 'data:image/svg+xml;base64,'.
- * * Pass the name of a Dashicons helper class to use a font icon, e.g. 'dashicons-piechart'.
+ * * Pass the name of a Dashicons helper class to use a font icon, e.g. 'dashicons-chart-pie'.
* * Pass 'none' to leave div.wp-menu-image empty so an icon can be added via CSS.
* @param int $position The position in the menu order this one should appear
*
add_action( $hookname, $function );
if ( empty($icon_url) ) {
- $icon_url = 'none';
+ $icon_url = 'dashicons-admin-generic';
$icon_class = 'menu-icon-generic ';
} else {
$icon_url = set_url_scheme( $icon_url );
*
* If the slug hasn't been registered properly no url will be returned
*
- * @since 3.0
+ * @since 3.0.0
*
* @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
* @param bool $echo Whether or not to echo the url - default is true
return $parent;
}
- /*
- if ( !empty ( $parent_file ) ) {
- if ( isset( $_wp_real_parent_file[$parent_file] ) )
- $parent_file = $_wp_real_parent_file[$parent_file];
-
- return $parent_file;
- }
- */
-
if ( $pagenow == 'admin.php' && isset( $plugin_page ) ) {
foreach ( (array)$menu as $parent_menu ) {
if ( $parent_menu[2] == $plugin_page ) {