On Windows machines register_activation_hook() does not work if plugin is in a subfolder of the plugins dir
|Reported by:||McShelby||Owned by:||westi|
|Severity:||major||Keywords:||has-patch plugin_basename register_activation_hook commit|
If you try to create a plugin in a subfolder of the 'plugins' directory and your are running Wordpress on a Windows machine, the function registered by register_activation_hook() will not be executed.
This is because of different backslashes on UNIX and Windows and the way the function plugin_basename()/admin panel works.
On Windows plugin_basename() returns the backslash in its return value while on Unix returning the slash. The plugins activation screen in the admin panel of Wordpress is always using slashes. You can easily see this by hovering over Askimets activate/deactivate button.
register_activation_hook() is using plugin_basename() to install the activation filter while the file wp-admin/plugins.php will use the value from the plugins activation screen to access the installed filter. Because of different slash types, the filter will not be found and so will never be executed.
If you take a look into the Bad Behaviour 2.0.4 plugin, you'll see from the comments that other guys have had the same problem with register_activation_hook().
Change History (17)
comment:11 DD32 — 6 years ago
- Keywords has-patch plugin_basename register_activation_hook added; needs-patch removed
comment:12 westi — 6 years ago
- Owner changed from anonymous to westi
- Status changed from new to assigned
comment:15 westi — 6 years ago
- Milestone changed from 2.3 (trunk) to 2.2.3
- Resolution fixed deleted
- Status changed from closed to reopened