flush_rewrite_rules() not working on plugin activation

I am experimenting with creating a simple plugin to create a custom post type named project but am having some trouble with the rewrite rules not been flushed on activation.

I have the main plugin file with this function:

register_activation_hook( __FILE__, 'Project_Custom_Post_Type::activate' );

Then within my class I have this:

public function activate() {
  flush_rewrite_rules();
}

My class has a construct of:

public function __construct() {
  add_action( 'init', array( $this, 'register_post_type' ), 0 );
}

I cannot see why it is not working? My deactivation flush works fine.

3 Answers
3

Your string is not read as a callback. You should pass an array:

$pcpt = new Project_Custom_Post_Type;
register_activation_hook( __FILE__, array( $pcpt, 'activate' ) );

Note that init happens before plugin activation, so not callbacks from your class will be executed.

Leave a Comment