That's basically just manually doing the platform behavior, since it's the platform behavior that makes the objects act solid.
Basically once the object overlaps a wall, you'd move it out in some direction till it's not overlapping. If the object isn't overlapping at its old position then move toward there. The other case is if you just place the Sprite in the wall, and it should just be moved to the closest open space.
That's only the first part. After that try moving horizontally then vertically to get to the place it was overlapping. Of course just stopping short. When moving horizontally and it hits a solid then set the horizontal speed to zero. The same for vertical. Without this part the object would just stick to walls. When moving vertically you can find when the Sprite is on the ground, and there is where you'd simulate a jump if the jump key is pressed.
Slopes would need some extra logic when moving horizontally, and moving platforms would need some logic too. It just depends what you need.
Also here's an entirely different idea I posted elsewhere before. It still uses solid but makes a duplicate of the layout in a different location.
https://www.dropbox.com/s/i1vr8srq201gw ... .capx?dl=0
Here's the topic it's from. Maybe one of those solutions will help.
ignore-selected-solids-workaround-list_t167029?&hilit=Disable+collision