'; } } $instance = new Demo(); add_action( 'wp_head', array( $instance, 'do_a_thing' ) ); // problem: without access to $instance, removing this hook is hard // solution: add_action( 'plugins_loaded', 'remove_it' ); function remove_it() { global $wp_filter; foreach( $wp_filter['wp_head']->callbacks as $priorities ) { foreach ( $priorities as $name=>$action ) { if ( isset( $action['function'] ) && is_array( $action['function'] ) && isset( $action['function'][0] ) && is_object( $action['function'][0] ) && is_a ( $action['function'][0], 'Demo' ) && $action['function'][1] === 'do_a_thing' ) { remove_action( 'wp_head', $name ); } } } }