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

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

I have some database code I need to run on plugin activation, but the code need not run again after that.

Related posts

Leave a Reply

3 comments

  1. 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
         }
    }
    
  2. 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");
        }
        ?>