常用函数-register_activation_hook()

0条评论

常用函数-register_activation_hook()

register_activation_hook函数 (WordPress 2.0版本被引入) 寄存一个插件函数,该插件函数在插件被激活时运行。

该函数比activate_pluginname动作使用更加方便。

用法与参数

<?php register_activation_hook($file, $function); ?> 

$file

(字符串)wp-content/plugins目录下的主插件文件路径。可运行完全路径。

$function

(回调)激活插件后将运行的函数。任何PHP回调虚拟型态都可运行。

示例

如果在以下任一位置的主插件文件中有一个名为myplugin_activate()的函数

  • wp-content/plugins/myplugin.php or
  • wp-content/plugins/myplugin/myplugin.php

可使用以下代码:

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' );  

更多相关信息请参照: http://wordpress.org/support/topic/201309