В таком ключе как у Вас нужно отлавливать момент когда пользователь находится именно в категории.
Можно сделать через хук
add_action( 'pre_get_posts', 'filters_modify_main_query' );
function filters_modify_main_query( $query ) {
if ( strpos( '_' . $_SERVER['REQUEST_URI'], '/product-category/' ) > 0 && $query->is_main_query() ) {
//change query
}
return $query;
}
Ну и где change query прописать порядок по id.
Лучше реализовать это через метаполе position в товаре и указать сортировку по метаполю. Это будет наиболее правильный вариант.
В вашем же случае, если указывать в метаполе таксономии порядок без костылей не обойтись.