User provided ratings of events and directory members
Under Drupal, you could do this with civicrm_entity to link a Drupal entity with your CiviCRM entity.  There's also the abandoned civicrmentity (no underscore) which lets you add Drupal fields directly to a CiviCRM entity without a corresponding Drupal entity.

AFAIK there's no equivalent functionality in Wordpress, so you'll have to find a Civi-native approach.  You may want to get in touch with this person to get the self-service CiviEvent update functionality into core - then you could add a "rating" custom field for participants to fill out after a class.  From there, a simple extension to calculate an average rating on the event would be trivial.

Doing this for contacts is a little trickier natively.  I might try to do it using a new activity type - "created by" would be the user submitting the rating. "With" would be the person being rated.  Again, you'd need an extension to average/count the ratings.