Sorry, I see a lot of mess in your file, some of the problems: objects don't have loc, rot and scale applied; some objects are parented one to another, you have three different rigs for a single simple character, bones are set to quaternion while animation is on Euler, and so on .....
There is no need of constraints, I think you should get a better understanding of the rigging principles and then start again from scratch.
As usual, there are many methods to reach yout goal, I'll try to illustrate one of them: in this method we don't use vertex groups: every object is directly parented to a bone of a single armature, and the 5 objects stitch together thanks to the armature parent ties.
After the end of modelling process, you have 5 objects: body, foot.L, foot.R, and the two eyes (after applying the mirror modifier).
Unparent (Alt+P) every object one to another, then move and rotate them to their rest position (it can be feets right under the body, in central position)
Select one object and apply (Ctrl+A) location, rotation and scale, so that every object has his origin in 0,0,0 location, 0,0,0 rotation and 1,1,1 scale
Create a new rig with one bone for the body, one bone for the leg.L and one for the leg.R (in your example there is no need for the other four "feets" bones), then, in edit mode, select (in this order) leg.L, leg.R and body bones, <Ctrl+P> and choose "Keep offset" option.
In pose mode select a bone and choose "Euler XYZ" option in the Nproperties tab; do the same with the others 2 bones.
Go to pose mode, select leg.L bone, go to object bone, select the foot.L, shift select the leg.L bone, press Ctrl+P and choose "Bone" option: in this way the whole foot.L object will follow all movements of the the leg.L bone.
do the same with foot.R and body (shift select eyes, body and body bone, in this latter case)
If you move (in pose mode) the body bone, the body object will follow it, and so will do the feets, because leg bones are parented to body bone and feets objects are parented to leg bones.
to program a basic walk cycle go to frame one, rotate the two leg bones in contact position (one forward and one backward), then select all bones and press I and choose rotation option. Go to frame 41 and press i again. go to frame 11 and select all bones press Alt+R to reset the rotation of the bones, then pressi I. Go to frame 31 and press I again. Go to frame 21 and set the legs rotation to the inverted contact position (one backward, the other forward).
Set the cycle from 1 to 40 and GO!
In this way the cycle will be:
- 1 contact
- 11 passing
- 21 inverted contact
- 31 passing
- 41 (1 again) contact
If you repeat the cycle, you can then animate the location of the body (which, as seen, will move the whole character).
Good luck and keep it on, I also had lots of headaches in understanding rigging, search Nathan Vegdahl free you tube tutorials for deep understanding of advanced rigging.