The Gravity Forms User Registration Add-On plugin allows you to Create (or Update) a WordPress user and their meta fields from a Gravity Form’s fields. It’s a great plugin.
By default, it only allows one feed type per form: a Create OR an Update feed.
I build a lot of Membership Application forms with Gravity Forms. I used to build two forms per User Registration feed: one for logged-out users and another for logged-in users. It was annoying for me and our clients to maintain two forms.
I spent some time seeing if I could use both a Create and Update feed on one form, triggering one or the other feed based on a user’s log-in state.
I found a way to do it. I’m sharing the code in case it’s useful to anyone.
To use this code, copy the class into a plugin (or your theme). Then call gravity_forms_user_registration::init() from an action such as ‘plugins_loaded’.
AJ
Hi, thanks for sharing this. However I cannot get it to work… Please help.
I have included a file named ‘gravity-forms-user-registration.php’ which contains your code, and have called it inside a hook using the example you gave:
add_action( ‘plugins_loaded’, array( ‘gravity_forms_user_registration’, ‘init’ ) );
The issue I’m having is on the backend of Gravity Forms, when I Edit my Form Settings and go to User Registration, where I can create a new Feed… the option to add a new Update Feed is disabled when I already have a Create Feed.
How do I get around this? I tried simply removing the disabled=1 from the front-end HTML using Inspect Element, and that got me one step further, but I was thrown an error when I tried to Save.
Thanks,
AJ
AJ
Hi, ignore the previous comment – I was missing a line from my functions file…
Previously I had in functions.php:
include ‘gravity-forms-user-registration.php’;
add_action( ‘plugins_loaded’, array( ‘gravity_forms_user_registration’, ‘init’ ) );
Now I have:
include ‘gravity-forms-user-registration.php’;
add_action( ‘plugins_loaded’, array( ‘gravity_forms_user_registration’, ‘init’ ) );
gravity_forms_user_registration::init();
So it seems I was just missing: gravity_forms_user_registration::init();
However I have a new problem now…
Now that I have successfully created an ‘Update’ Feed alongside my ‘Create’ Feed for the same form, when I test the form using a logged-in user, although the form submits and appears to work (and it even creates the Tx and Sub in Stripe) it does not however create a Tx or Sub within MemberPress.
The result is that a subscription exists in Stripe but MemberPress does not register it.
Any ideas what could be wrong?
I have tested my setup using a separate form, which only has an Update Feed, not both… and this works fine. So I know that the rest of my setup is all functioning correctly it just appears not to work when the form has both an Update Feed together with a Create Feed.
Alice
Thank you SO much for sharing this. It’s exactly what I’ve been looking for and it did the job perfectly. Thank you!
Nish
Hi OP,
Great post.
The Gravity Forms User Registration add-on does not inherently provide the functionality to log in a user during the submission of a form that is connected to an “Update User” feed. The add-on expects the user to be already logged in when filling out an “Update User” feed form.
Do you have a workaround to get the “Update User” Feed to log a user in and save the response?
Nathan Kowald
Hi Nish,
I don’t think I understand your use case, sorry.
The Update User feed is only triggered if the user is logged in already.
For logging in newly created users I use this Gravity Perk plugin: https://gravitywiz.com/documentation/gravity-forms-auto-login
My Create feed handles:
1. Creating a new WordPress user with fields submitted in the form.
2. Auto Login then logs the user in automatically, once created.
My Update feed handles
1. WordPress user is already logged in.
2. Updating the WordPress user’s details with fields submitted in the form.
In my case I then only need one form with both a Create and Update feed, and this other auto login plugin.
What do you need to do?
Scot MacDonald
This looks great.
So, can I use the snippet as provided in a plugin like Code Snippets without any additional info versus using pasting into functions.php?
Nathan Kowald
Hi Scot,
I’ve not used Code Snippets, but pasting this code there should work fine.
To use this code with Code Snippets, you would paste the class into code snippets (just line 3 – 141 above, leaving out the opening PHP tag).
Then directly below the pasted code use this action to call the class init method:
add_action( ‘plugins_loaded’, array( ‘gravity_forms_user_registration’, ‘init’ ) );
walad
Hi
Thank you for providing this code.
I am getting this error, when I follow you instructions in the comment
“We encountered an error activating your snippet, please check the syntax and try again. Error message: Undefined constant ‘plugins_loaded’”
Nathan Kowald
Hi Walad,
That error suggests the plugins_loaded bit was added incorrectly.
plugins_loaded is an action that calls this gravity_forms_user_registration class init method.
If you’re using this as a snippet, then you maybe can’t upload the class file and include it.
Instead you can paste the entire class code into the snippet (this code minus the opening php tagg: https://gist.githubusercontent.com/n8kowald/1ca0e5985c6a95106e05788ade0c1724/raw/e4577a2308f0c5fb7edc233bb1441ed76c85474d/gravity-forms-user-registration.php
And then after the pasted class, call the action which runs the code:
add_action( ‘plugins_loaded’, array( ‘gravity_forms_user_registration’, ‘init’ ) );
With the class pasted, the callable method will be available to use.
walad
Hi,
Thanks for getting back.
I managed to add “gravity_forms_user_registration::init();” below the last line of your code and it worked just fine.
Nathan Kowald
Hi Walad,
Glad you got it working! Thanks for sharing your solution.
Josh
Hi Nathan,
This code has allowed us to setup a create and update feed, we have verified that create is working however on update we get the following error from ‘User Registration Add-On’ debug log.
2024-05-28 11:18:26.966670 – DEBUG –> GFFeedAddOn::maybe_process_feed(): Feed processing is delayed, not processing feed for entry #68 for gravityformsuserregistration
Any ideas ?
Nathan Kowald
Hi Josh,
There was a change a while ago where feeds were made asynchronous.
I remember when that happened as we needed to change our user registration feed back to being synchronous again.
You may be able to use this filter to stop user registration feeds from being asynchronous. Hopefully this solves the problem.
/**
* gravityformsuserregistration can create two feeds: create and update.
* Create is async disabled.
* Update is async enabled.
* We want Update feeds to be async disabled also.
*
* @param bool $is_async_feed_enabled
* @param array $feed
* @param array $entry
* @param array $form
*
* @return boolean
*/
function gravity_forms_disable_async_processing_for_user_registration_feeds( bool $is_async_feed_enabled, $feed, $entry, $form ) {
if ( ! empty( $feed[‘addon_slug’] ) && ‘gravityformsuserregistration’ === $feed[‘addon_slug’] ) {
return false;
}
return $is_async_feed_enabled;
}
add_filter( ‘gform_is_feed_asynchronous’, ‘gravity_forms_disable_async_processing_for_user_registration_feeds’, 10, 4 );
Please leave a comment if this solves it. I’ll update this blog post and add this filter as a requirement to get both create and update feeds working.
Josh
Hi Nathan,
I’ve tested this below the following code in my functions.php however it didn’t work
include ‘gravity-forms-user-registration.php’;
add_action( ‘plugins_loaded’, array( ‘gravity_forms_user_registration’, ‘init’ ) );
gravity_forms_user_registration::init();
Nathan Kowald
Hi Josh,
Sorry for the late reply, you’ve probably moved on since.
I’ll add this updated gist here anyway, which includes the async filter addition: https://gist.github.com/n8kowald/7bd0deefb9bd2817268b48f3b4cc05b5
It seems most people are using this by pasting everything into snippets or functions.php. This updated gist can be used by copying everything (besides the opening php tag) into functions.php or snippets. Easier than taking the class code, uploading that as a new file in a theme or plugin and including it via PHP.
Phill
Hi,
Thanks for this. Could you you help me out with a couple of issues I’m having?
If I have the update feed active in settings, then browsing the form on the front-end results in the form being hidden and a message presented that essentially says to see the form you need to be logged-in.
If I disable the update feed leaving just the create feed, the form is viewable.
Also, if I go to edit the update field the feed type selector has the update option disabled, and I can only save changes to this feed if I edit the html in console and remove the disabled attribute.
The create feed has no such issues.
Any incites or suggestions to fix this?
Thanks.
Nathan Kowald
Hi Phil,
Maybe I’m not understanding your questions – please elaborate if so – but by default that’s how the User Registrations Feed works.
Update feeds require a logged in WordPress user to UPDATE.
Create feeds CREATE the WordPress user, so not being logged in is the correct state.
The code I’ve added to this blog post allows someone to use both a CREATE and UPDATE feed, getting around the need to edit the HTML via console to enable it. I’m not sure if you’ve added this code though.
Nathan