register_activation_hook函数 (WordPress 2.0版本被引入) 寄存一个插件函数,该插件函数在插件被激活时运行。
该函数比activate_pluginname动作使用更加方便。
<?php register_activation_hook($file, $function); ?>
$file
(字符串)wp-content/plugins目录下的主插件文件路径。可运行完全路径。
$function
(回调)激活插件后将运行的函数。任何PHP回调虚拟型态都可运行。
如果在以下任一位置的主插件文件中有一个名为myplugin_activate()的函数
可使用以下代码:
register_activation_hook( __FILE__, 'myplugin_activate' );
一旦激活插件, myplugin_activate()函数将被调用。这比使用activate_pluginname动作更为可靠。
用户使用全局变量时,可能发生以下情况:传递给register_activation_hook()的函数无法在被调用时访问全局变量,即使用以下方式在函数内声明全局变量范围:
$myvar='whatever'; function myplugin_activate() { global $myvar; echo $myvar; // this will NOT be 'whatever' } register_activation_hook( __FILE__, 'myplugin_activate' );
这是因为在原先的范围内,插件并不包含在全局变量范围内,而是包含在activate_plugin函数中,因此插件“主体”未被自动归入全局变量范围。
这就是编码时要*一直*保持明确表达的原因。如果希望将变量变成全局变量,就需要以同样方式声明。如果需要在插件主体中使用变量,就要在插件主体中作相应声明。
插件被激活时会被归入另一个函数,而与此同时在该函数内(指定为activate_plugin()函数)调用myplugin_activate()。这样主体变量成为activate_plugin()函数的的一部分且不成为全局变量,除非用户明确指定全局变量范围:
global $myvar; $myvar='whatever'; function myplugin_activate() { global $myvar; echo $myvar; // this will be 'whatever' } register_activation_hook( __FILE__, 'myplugin_activate' );