Forked from sabrina-zeidan/acf_sync_with_user_profile.php
Created
March 22, 2023 10:11
-
-
Save waqasraza123/471f2cf2d1e4c52da1ae48d22b33e316 to your computer and use it in GitHub Desktop.
When you have ACF User fields like first name and last name and you need to keep that in sync with what is entered in WordPress user profile (works both ways)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//If both changed at the same time - custom field value will be applied as it fires later, set 30 to change it add_action( 'profile_update', array($this, 'update_acf_fields'), 30, 2 ); | |
class Sync_ACF_with_User_Profile_Class { | |
static public $sync_pair = array( | |
array( 'acf' => 'member_name', 'profile_field' => 'first_name'), //add acf field name according to your setup | |
array( 'acf' => 'member_lastname', 'profile_field' => 'last_name')// add more rows to sync any other fields as well | |
); | |
public function __construct() { | |
add_action( 'profile_update', array($this, 'update_acf_fields'), 10, 2 ); //when profile is updated -> update ACF | |
add_action('updated_user_meta', array($this, 'update_user_profile_fields'),10,4); // when ACF is updated -> update profile | |
add_action('added_user_meta', array($this, 'update_user_profile_fields'),10,4); // when ACF is added -> update profile | |
} | |
public function update_user_profile_fields($meta_id, $user_id, $meta_key, $meta_value){ | |
$user_data = get_userdata( $user_id ); | |
foreach (Sync_ACF_with_User_Profile_Class::$sync_pair as $sync_pair){ | |
if ($sync_pair['acf'] == $meta_key ){ | |
$profile_field = $sync_pair['profile_field']; | |
$profile_field_value = $user_data->$profile_field; | |
$update = ($profile_field_value == $meta_value) ? false : wp_update_user(['ID' => $user_id, $profile_field => $meta_value]); | |
} | |
} | |
} | |
public function update_acf_fields( $user_id, $old_user_data ) { | |
$user_data = get_userdata( $user_id ); | |
foreach (Sync_ACF_with_User_Profile_Class::$sync_pair as $sync_pair){ | |
$meta_value = get_user_meta($user_id, $sync_pair['acf'] , true); | |
$profile_field = $sync_pair['profile_field']; | |
$profile_field_value = $user_data->$profile_field; | |
$update = ($profile_field_value == $meta_value) ? false : update_user_meta($user_id, $sync_pair['acf'], $profile_field_value ); | |
} | |
} | |
} | |
$sync = new Sync_ACF_with_User_Profile_Class(); | |
add_action( 'wp_loaded', array( $sync, '__construct' ) ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment