开发者

Adding code to plugin that only executes the first time its activated?

开发者 https://www.devze.com 2022-12-27 16:37 出处:网络
Is it possible to wrap code in a special function that only executes the first time the plugin is activated?

Is it possible to wrap code in a special function that only executes the first time the plugin is activated?

I have some 开发者_StackOverflow中文版database code I need to run on plugin activation, but the code need not run again after that.


Yes, this is possible. You can register a plugin activation hook that only gets run when the plugin gets activated. I dredged up an old plugin I wrote for some example code:

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
     }
}


http://codex.wordpress.org/Function_Reference/register_activation_hook

The function register_activation_hook (introduced in WordPress 2.0) registers a plugin function to be run when the plugin is activated.


remember also once your plugin is being deactivated by yourself/user you can remove any tables options that you have stored in the wp database, I wrote a little post about this recently talking about the wp register_deactivation_hook() function..

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");
    }
    ?>
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号