Красивый URL и его обработчик сделать можно, но сначала главный и основной вопрос - а зачем именно отдельная таблица? Имхо, можно (и нужно) обойтись стандартной таблицей (таблицами), создание своей - это уже прям для частных случаев.
UPDATE:
Если уж прям действительно хотите идти этим путем (хотя очень и очень не советую), помните, что практически все функции, связанные с WP_Query, request и тд работать у вас не будут - придется писать свое. В общем, почти любая привычная плюшка WP будет работать некорректно или не работать вообще.
1. Сначала делаем урлы - для этого добавляем все необходимые схемы с помощью add_rewrite_rule()
2. Далее пишем обработчики для этих урл (тех, которые будут содержать ваши $matches[x])
3. Далее пишем helper функции - для генерации урл и вставки их в контент, для пагинации и тд
4. Далее хукаемся в template_include и подключаем нужные шаблоны
5. А теперь начинаем тестирование и отлавливаем вагон мелочей, устанавливаем все нужные глобальные переменные, чтобы WP не ругался и весь остальной функционал работал
6. Ну и админку ручками пилите.
Можно попробовать запилить свой кастомный WP_Query, что-то типа My_Query, основанный на родном. Но, как я уже писал в комментах, это танцы с бубном, которые не имеют никакого смысла. Делайте для ваших товаров обычный custom post type, создавайте ему таксономии, добавляйте произвольные поля с помощью Advanced Custom Fields Pro и не ищите себе проблем на пятую точку, на пустом месте. Из ваших комментов я так и не увидел объективной причины использовать свою таблицу. Если вы переживаете что база будет большая и будет тупить - зря, правильно приготовленный WP летает, а 30+15к записей это ни о чем. Если у вас много характеристик товаров и вы боитесь что они в виде meta_query в фильтрах будут тупить - для этого есть Elastic Search. Ну или на крайняк сами характеристики вынесите в отдельную таблицу, включить ее данные в стандартный WP_Query с custom post type будет проще и легче (
см тут как пример)