Home › Forums › General Issues › Unable to write multiple values ACF user field back to DB
My project is to make a match of mentors & mentees, and then add the (revised) list of current mentees to the mentor user.
(This is project that someone else started and now I am trying to get it workable.)
I am trying to pull data from an ACF (Advanced Custom Fields/Wordpress) User field (current_mentees) that can have multiple values.
Then I need to add a new user to this array then write it back to the current_mentees.
I have tried a lot of different things, but am struggling with getting a variable that will then write back to the current_mentees.
I have been successful with writing ONE user, but it overwrites and does not add to the one(s) already there. I’m looking for code help to get past this barrier.)
$mentee = get_field(‘match_mentee’, $post_id); //ACF User field
$mentor = get_field(‘match_mentor’, $post_id); //ACF User field
$match_mentor_id = $mentor[‘ID’];
$mentor_post_id = “user_”.$match_mentor_id;
$current_mentees = get_field(‘current_mentees’, $mentor_post_id); //ACF User field (multiple)
update_field(‘current_mentees’ , $mentee , $mentor_post_id);
What I need to do is add:
$new_current_mentees = $current_mentees and $match_mentee; //I have tried a variety of array_push/merge, etc.
update_field(‘current_mentees’ , $new_current_mentees , $mentor_post_id);
Here is what I get for the: $current_mentees = get_field(‘current_mentees’, $mentor_post_id); //2 mentee user records
//$current_mentees
array(2) { [0]=> array(11) { [“ID”]=> int(55) [“user_firstname”]=> string(3) “Jon” [“user_lastname”]=> string(6) “Mentee” [“nickname”]=> string(23) “jhagee@frontierfolk” [“user_nicename”]=> string(22) “jhageefrontierfolk” [“display_name”]=> string(10) “Jon Mentee” [“user_email”]=> string(23) “jhagee@frontierfolk” [“user_url”]=> string(0) “” [“user_registered”]=> string(19) “2018-08-30 13:42:07” [“user_description”]=> string(0) “” [“user_avatar”]=> string(280) “” } [1]=> array(11) { [“ID”]=> int(57) [“user_firstname”]=> string(8) “Jennifer” [“user_lastname”]=> string(5) “Lee” [“nickname”]=> string(22) “jennifer.lee@uky” [“user_nicename”]=> string(21) “jennifer-leeuky” [“display_name”]=> string(14) “Jennifer Lee” [“user_email”]=> string(22) “jennifer.lee@uky” [“user_url”]=> string(0) “” [“user_registered”]=> string(19) “2018-08-30 19:24:01” [“user_description”]=> string(0) “” [“user_avatar”]=> string(280) “” } }
2352 66 current_mentees a:2:{i:0;s:2:”55″;i:1;s:2:”57″;}
2353 66 _current_mentees field_5a74a97e7f12c
Thanks in advance!
Update:
I was able to write the string: ‘a:1:{i:0;s:2:”57″;}’ back to the database.
And then tried: ‘a:2:{i:0;s:2:”55″;i:1;s:2:”57″;}’ and also ‘a:3:{i:0;s:2:”55″;i:1;s:2:”57″;i:2;s:2:”60″;}’, they worked too.
so maybe that is the way I need to fix this.
Any suggestions for the most efficient way to code this?
To recap:
I pull the string from the database, may be 0 characters, on up… in that string array.
I’ll need to add a new one to the end that and then put it back into the database.
So:
$old_current_mentees = ‘a:1:{i:0;s:2:”55″;}’ or ‘a:2:{i:0;s:2:”55″;i:1;s:2:”57″;}’ or ‘a:3:{i:0;s:2:”55″;i:1;s:2:”57″;i:2;s:2:”62″;}’; etc
add new_mentee = a:2:{i:0;s:2:”55″;i:1;s:2:”68″; to the string array
make sure it has the proper wrappers
$new_current_mentees = $old_current_mentees + new_mentee
write it to a variable to upload back into the DB.
Any suggestions for the most efficient way to code this? Functions to use? Sample code?
Thanks!
It is not 100% clear by your question what type of field you’re using. If you are working with a user field, a user field stores only the User ID values in and array. The same is true of a relationship field if that is what you’re using. When you use update_field()
you need to supply ACF with the value as it needs to be stored, in this case an array of ID values.
You can get the current value unformatted by using the 3rd parameter.
$current_mentees = get_field('current_mentees', $mentor_post_id, false);
then you can add a new ID to the array
$current_mentees[] = 125; // or whatever code your using to get the ID to add
then you update the field
update_field('current_mentees' , $current_mentees , $mentor_post_id);
Hi John,
Thanks for the advice! I’ll try this out then get back with you later this morning.
Jon
The topic ‘Unable to write multiple values ACF user field back to DB’ is closed to new replies.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Cookie Policy. If you continue to use this site, you consent to our use of cookies.