email_address != '' ) { // No associated user. Need to create one $userdata = array( 'user_login' => $contact->email_address, 'user_email' => $contact->email_address, 'display_name' => get_the_title( $post_id ), ); if ( $contact->user_id == '' ) { $userdata['role'] = 'property_hive_contact'; $userdata['user_pass'] = NULL; // When creating a user, `user_pass` is expected. } else { // contact already associated with a user. Update user $userdata['ID'] = $contact->user_id; } $user_id = wp_insert_user( $userdata ); if ( ! is_wp_error( $user_id ) ) { update_post_meta( $post_id, '_user_id', $user_id ); } else { // Something went wrong when inserting the user var_dump($user_id); die(); } } else { // Contact doesn't have an email address } } public static function pre_user_query( $user_search ) { global $wpdb; $user_search->query_where .= " AND NOT EXISTS ( SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta WHERE {$wpdb->usermeta}.meta_key = 'wp_capabilities' AND {$wpdb->usermeta}.meta_value LIKE '%property_hive_contact%' AND $wpdb->usermeta.user_id = {$wpdb->users}.ID ) "; return $user_search; } public static function remove_ph_contact_role_from_dropdown( $all_roles ) { unset($all_roles['property_hive_contact']); return $all_roles; } } PH_User_Contacts::init();