|Create a floor (typically, a plane will do)|
Create a compete armature.
Create small bones (as many as needed) -> place at bottom of feet
Name (e.g., LFootBone, RFootBone, etc)
Set ankle control bone to offset to foot bone
Edit mode -> Select foot bone -> select ankle control bone -> Control+P -> Keep Offset
Repeat as needed
Select foot bones -> select hip control bone -> Control+P - Keep Offset
Ankle control bone will not "pull" foot bone when selected and dragged. All foot movement must now be done from the foot bone; the ankle control is essentially useless.
Select foot bone in Pose mode
Properties -> Bone Constraints -> Relationships - Floor
Target = plane
Check "sticky" (WARNING: This option makes it very hard to animate.)
Go into Object Mode and attempt to drag your armature through the floor. If the feet do not phase through the plane, you have done this correctly.
If using "sticky"
When scrubbing through the timeline while recording movement, it is not unusual to be finding your feet sticking and generally making everything look wrong. Scrub until things fix.