Во-первых, приучитесь гуглить на английском языке, ваш вопрос уже много раз задавался и решение гуглится за 2 секунды.
Во-вторых, для того, чтобы делать любую сортировку (в т.ч. по рейтингу, по другим доп. полям) достаточно знать как работает WP Query.
Вам нужно передавать $_GET параметр на текущую страницу и подхватывать его в скрипте.
Например кусок кода для вывода постов по дате публикации:
$postsPerPage = 10;
$page = 1;
$query = new WP_Query(array(
'cat' => 4,
'post_status' => 'publish',
'orderby' => $_GET['orderby'],
'order' => 'ASC',
'paged' => $page,
'posts_per_page' => $postsPerPage));
Сама же ссылка, на показ новостей по дате будет иметь вид
site.ru/category/?orderby=publish_date
? где значение orderby как раз то, что которое мы передаем в цикл. Это лишь один пример. В случае с, скажем, просмотрами, вы делаете сортировку по доп. полю (как? гуглим wp query custom fields), так как кол-во просмотров, будет у вас доп полем. По комментариям, если я правильно помню, вместо
orderby=publish_date
мы передаем
orderby=comments_num
, ну и так далее.