[buddypress-trac] [BuddyPress Trac] #5481: Buddypress should set user meta for single sites in bp_core_signup_user
noreply at wordpress.org
Thu Mar 27 16:18:30 UTC 2014
#5481: Buddypress should set user meta for single sites in bp_core_signup_user
Reporter: StijnDeWitt | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Core | Version: 1.9.2
Severity: minor | Keywords:
I am working on a website on which users from different sources will be
logging in. Some are existing users that I will perform custom
authentication on and from code will be creating WordPress / BuddyPress
accounts for (using function bp_core_signup_user). Others will register
themselves in the regular way.
I want to prevent sending activation emails only for those users that are
already registered (and activated if you will) in the external system. I
looked into this subject and came to the conclusion that I should
implement a filter hook for 'bp_core_signup_send_activation_key',
returning false to prevent BuddyPress from sending an activation mail. The
problem I am facing is that inside the filter hook I have no idea where
the user came from originally. I can get access to the current user, but
because BuddyPress only just created that user there is nothing on it that
helps me differentiate.
Before calling bp_core_signup_user, the user does not exist yet, so I
cannot update_user_meta on it... By the time the call to
bp_core_signup_user has completed, my bp_core_signup_send_activation_key
hook has already been called and it's too late.
The solution might be simple. I see that bp_core_signup_user accepts an
argument $usermeta. For multi-sites it just passes this argument on to
wpmu_signup_user which adds it to the user account. However, for single
sites it does something spiffy with it for xprofile, but further ignores
it. If it would add the user meta that remains after updating the user's
xprofile, before calling the action hook, I could just pass on the user's
account type in the $usermeta argument to bp_core_signup_user and then in
my bp_core_signup_send_activation_key hook check this meta. Alternatively,
you could pass on the $usermeta parameter to the
bp_core_signup_send_activation_key directly when calling apply_filters. In
any case I think having access to this meta in the filter hook would be
really useful for other BuddyPress users as well.
The way it is now, I see no other alternative than to either change the
BuddyPress core function, or instead of calling it, copy it to my code and
change it there (which is what I intend on doing).
I consider the fact that BuddyPress attaches the meta for WPMU sites but
not for single sites as a bug. Sorry if I'm wrong about that.
Disclaimer: I'm pretty new to WordPress / BuddyPress so I could be
overseeing some really simple/elegant solution. Don't hesitate to close
this bug if that is the case.
Ticket URL: <https://buddypress.trac.wordpress.org/ticket/5481>
BuddyPress Trac <http://buddypress.org/>
More information about the buddypress-trac