I made a quick and dirty wallclimb mechanic but it´s not perfect.
There´s a few things in the project that you should absolutely fix.
1. The characters collision polygon is inconsistent. I fixed it in the project but ideally you have an invisible sprite in the background that represents the collision and doesn´t change at all and have the player sprite pinned to it.
2. I think you should add something like a state machine to handle the players movement. Right now e.g. you can use your doublejump while climbing. Having a state machine would help with this. (There is even an addon but I haven´t used that)
Basically you have a variable on the player that defines what state he is in, e.g. "if shift is down & has wall to left/right > set variable to climbing" and then you can easily check along the lines of "if player is (not) climbing > ... " Doing it like this helps as there is always a defined state the player is in rather than stuff like a climbing player could also be considered "in the air" and thus pressing W uses the double jump. Same goes for stuff like dashing, jumping, falling, attacking,... Hope that´s understandable.