2010-04-22 90 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"); 
    } 
    ?> 
相關問題