Hello,
To get sorting by custom attributes:
1) go to Products > Attributes > create attributes and choose the type of the attribute according to your needs http://prntscr.com/nu98f9 .
2) Use these attributes for your products (http://prntscr.com/nu999q)
3) Go to Appearance > Widgets > add the widgets to filter by price, by attribute or swatches filter widgets http://prntscr.com/nu9a8d
Watch the video tutorial to find out how to create variation swatches https://youtu.be/XO-PDvhPypc
Regards