2010-04-22 55 views

回答

9

是的,这是可能的。您可以注册一个只在插件被激活时才运行的插件激活挂钩。我挖出了一个老的插件我的一些示例代码中写道:

class MyPlugin 
{ 
    //constructor for MyPlugin object 
    function MyPlugin() { 
     register_activation_hook(__FILE__,array(&$this, 'activate')); 
    } 

    function activate() 
    { 
     //initialize some stored plugin stuff 
     if (get_option('myplugin_data_1') == '') { 
      update_option('myplugin_data_1',array()); 
     } 
     update_option('myplugin_activated',time()); 
     //etc 
    } 
} 
+0

感谢Zombat,尤其是对于这个例子。一个问题:是否有可能有一个工作插件(只要插件被激活就会执行的代码)还有一个激活钩子? – 2010-04-22 20:07:01

+0

我不太确定我关注。只要在wordpress管理面板中发生“激活插件”动作,您注册为激活钩子的任何内容都会运行。你可以在插件类中有一堆其他的代码来完成其他的工作,但不依赖于激活钩子。它可以正常使用。对不起,如果这不能回答你的问题,我不明白你在问什么......? – zombat 2010-04-22 20:13:47

+0

我想通了。我对将插件的init放在哪里以及在哪里放置激活钩子感到困惑。 – 2010-04-22 20:25:26

1

还记得有一次你的插件是由你自己停用/用户,您可以删除已储存在WP数据库中的所有表的选项,我写了一个后一点关于这个最近谈论WP register_deactivation_hook()函数..

http://www.martin-gardner.co.uk/how-to-get-your-wordpress-plugin-to-drop-table-from-the-database/

<?php 
    register_deactivation_hook(__FILE__, ‘pluginUninstall’); 

    function pluginUninstall() { 
     global $wpdb; 
     $thetable = $wpdb->prefix."your_table_name"; 
     //Delete any options that's stored also? 
     //delete_option('wp_yourplugin_version'); 
     $wpdb->query("DROP TABLE IF EXISTS $thetable"); 
    } 
    ?> 
相关问题