I’ve been trying this out lately, and turns out it’s a bit difficult, for starters you probably won’t be able to use a character movement component at all, as it’s up vector is hard-coded to the world up direction, so you’d need to disable that (as well as gravity) and use your own ‘custom gravity’ to hold the character onto the wall, then use more custom forces to actually move the player in the world.
For example, I’ve been playing with this in a spider drone, and I found it easier to make a pawn blueprint (not character). Have a constant line trace beneath the pawn to get the normal vector of the surface below the pawn, then use the AddForce node to create a ‘Custom Gravity’ that pushes the pawn toward that detected normal vector, which enables it to walk up a slope and keep walking parallel to the surface - creating wall walking.
To allow the drone to rotate to a 90° wall, I also used a second line trace at the front of the drone to detect a wall normal vector, then set the ‘Custom Gravity’ to that direction.
Note: getting/managing rotation to look/move around was probably the hardest part, you need to generate new ‘rotated world coordinates’ - this thread helped with that