WordPress.org

Ready to get started?Download WordPress

Forums

register_activation_hook not firing after initial activation (7 posts)

  1. jsdrew
    Member
    Posted 5 years ago #

    I'm using register_activation_hook in my plugin and it works fine on the initial activation, but when I de-activate and re-activate the plug-in as I have to do sometimes in development, register_activation_hook stops working. It doesn't even access the function. Is there a reason for this?

    Here is the code:
    `functions
    if ( !function_exists('artdb_install') ) :

    function artdb_install () {

    global $wpdb;

    $wpdb->artists = $wpdb->prefix . "artists";
    $wpdb->art_types = $wpdb->prefix . "art_types";
    $wpdb->art_images = $wpdb->prefix . "art_images";

    $table_name = $wpdb->prefix . "artists";
    if($wpdb->get_var("show tables like '$table_name'") != $table_name) {

    $sql = "CREATE TABLE " . $table_name . " (user_id bigint(20) NOT NULL, photo VARCHAR(35) NULL, bio longtext NULL, phone VARCHAR(10) NULL, inactive VARCHAR(1) NOT NULL, recchange VARCHAR(150) NULL, chgdate DATE NULL, uniqueurl VARCHAR(25) NULL, UNIQUE KEY user_id (user_id))";

    $wpdb->query("$sql");
    } else {
    $columns = $wpdb->get_results("SHOW COLUMNS FROM '$table_name'");
    $hasurl = false;
    foreach ($columns as $k => $v) {
    echo $v->field;
    if ($v->field = 'photo') {
    $hasurl = true;
    }
    }
    if (!$hasurl) {
    $wpdb->query("ALTER TABLE '$table_name' ADD uniqueurl VARCHAR( 25 ) NULL AFTER 'chgdate'");
    }

    }
    $table_name = $wpdb->prefix . "art_types";
    if($wpdb->get_var("show tables like '$table_name'") != $table_name) {

    $sql = "CREATE TABLE " . $table_name . " (user_id bigint(20) NOT NULL, art_type VARCHAR(25) NOT NULL)";
    $wpdb->query("$sql");

    $initialtypes = array(1 => 'Pictorial', 'Sculpture', 'Pottery', 'Photography', 'Watercolor', 'Mixed Media', 'Oils', 'Pastels');
    foreach ($initialtypes as $k => $v) {
    $sql = "INSERT INTO $wpdb->art_types (user_id, art_type) VALUES ('999999', '$v')";
    $wpdb->query("$sql");
    }
    }
    $table_name = $wpdb->prefix . "art_images";
    if($wpdb->get_var("show tables like '$table_name'") != $table_name) {

    $sql = "CREATE TABLE " . $table_name . " (user_id bigint(20) NOT NULL, image VARCHAR(35) NOT NULL, title VARCHAR(50))";

    $wpdb->query("$sql");
    }

    }
    endif;

    register_activation_hook(__FILE__,'artdb_install');

  2. smerriman
    Member
    Posted 5 years ago #

    Same problem here. Very frustrating in plugin development. It's been two weeks since this was posted, does anyone have any suggestions..

  3. palPalani
    Member
    Posted 5 years ago #

    Dear WordPress master,
    i'm also using "register_activation_hook" function, i'm try to create table but, it is not working.

    This is my code:
    function contact_install()
    {
    global $wpdb;
    $contacts = $wpdb->prefix ."contacts";
    $sql = "CREATE TABLE ". $contacts ." (
    id INT(9) NOT NULL AUTO_INCREMENT,
    user_id INT(9) NOT NULL
    UNIQUE KEY id (id)
    );";
    $wpdb->query($sql);
    }
    register_activation_hook(__FILE__, 'contact_install');

    please help me!

  4. palPalani
    Member
    Posted 5 years ago #

    Sorry, the error is my mistake, please ignore my post!

  5. bshort
    Member
    Posted 5 years ago #

    southdreamz - what was the mistake?

  6. alex_tingle
    Member
    Posted 5 years ago #

    I just encountered a similar problem. My registration hook wasn't firing.

    Eventually I tracked the problem down to a symbolic link. I'm in the habit of keeping plug-in code outside my wordpress tree, and just creating symlinks from in into the various wp-content/plugins directories where I want to test it.

    register_activation_hook() doesn't like that, because it looks for the "wp-content/plugins" directory in the plug-in file's canonical pathname. As soon as I physically copied my plug-in files into each WordPress tree, the activation hook started firing.

  7. mgtonelli
    Member
    Posted 4 years ago #

    alex_tingle -

    I got all my plugins under wp-content/plugins but it doesn't work either

    could you help me?

Topic Closed

This topic has been closed to new replies.

About this Topic