reconciling updated data in xprofile field stored as serialized array on sign-up
-
I have an xprofile field for newsletter when a user registers, which stores the field as a serialized entry of the allowed value for that field, which is the name set in the BuddyPress back end, in this case:
“Subscribe to free newsletter”
This results in a serialized entry in the wp_bp_xprofile_data table (in my case, for field 307) that looks like this:
id: 14421
field_id: 307
user_id: 15201
value: a:1:{i:0;s:28:”Subscribe to Free Newsletter”;}However, when I use the BuddyPress function to update that data:
// get permitted value for field 307 - required for xprofile_set_field_data() to work $field = xprofile_get_field( 315 ); $UpdateField = $field->name; xprofile_set_field_data( 307, $current_user->ID, $UpdateField );
The result is the field is now set to a simple string:
id: 14421
field_id: 307
user_id: 15201
value: Subscribe to Free NewsletterI want to reconcile these entries, so they are the same format, but when I converted the string to a serialized field the update function fails:
// serializing field $UpdateField $newfield = serialize ( $UpdateField ); // result: [s:28:"Subscribe to Free Newsletter";] xprofile_set_field_data( 307, $current_user->ID, $newfield );
This command fails, which I believe is because the field must match the allowed value as set in the back-end for the extended profile. I suspect because the serialized field looks like this:
s:28:"Subscribe to Free Newsletter";
But maybe should look like this:
a:1:{i:0;s:28:"Subscribe to Free Newsletter";}
So maybe I can convert the datum to a properly serialized array with the correct argument to the serialized function, and then pass it to the xprofile_set_field_data() function and get it to update.
But why is this behavior happening? This wouldn’t seem to be the expected behavior when I pass a string to the function. I would expect the value I set on registration would be the same format of the value set when I update the field. Am I doing something wrong and how do I reconcile these entries?
- You must be logged in to reply to this topic.