email_address != '' ) { $display_name = get_the_title( $post_id ); // No associated user. Need to create one $userdata = array( 'user_login' => $contact->email_address, 'user_email' => $contact->email_address, 'display_name' => $display_name, ); if ( !empty($display_name) ) { $name_parts = explode( ' ', $display_name ); if ( count($name_parts) > 1 ) { $userdata['last_name'] = array_pop($name_parts); $userdata['first_name'] = implode(' ', $name_parts); } else { $userdata['last_name'] = $display_name; } } 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; } } PH_User_Contacts::init();