Конкретный код я вам не напишу, так как это не быстро, но в целом алгоритм скажу.
1) То что дубли это назовем свойством wordpress. Решаю эту проблему тем что бы везде правильные ссылки были конкретно на этот элемент. В меню, хлебных крошках и т.д. Также надо правильно настроить постоянные ссылки. Робот поисковика не будет методом подбора все страницы перебирать и искать дубли. На страницу дубляжа может быть ссылка со стороннего сайта, тогда надо делать редирект. Может быть в карте сайта, если она автоматически генерируется, тогда карту надо настраивать. Так же для хлебных крошек и меню.
2) С пагинацией надо разбираться. Часто такое бывает если вы кастомизируете wp_query. Решается установкой стороннего плагина и передаче в вызов функции плагина запроса wp_query.
3) от слова category можно избавится плагином.
Ну для того что бы выводить либо подкатегории если они существуют, либо продукты алгоритм прост
1 Получить id текущей категории
2 Получить дочерние элементы этой категории
3 Если есть дочерние элементы, то выводим их, если нету то делам запрос товарам этой категории и выводим их.