Вроде как команда запуска vite а не npm run тк запускает и serve тоже, было бы не плоху узнать версию laravel и vite. На ранних этапах вайт был тот еще геморой а сейчас много проблем решает даунгрейд до версии где не добавили обязательное ssl
Станислав, проблема в том что global item возвращает только последний item вне лупа. это особенность глобальных переменных в WP, это не проблема вукомерса. Так например на второй странице будет выводить последний элемент второй страницы. Нужно правильно получить элемент в лупе и все.
Учи мат часть, а не оспаривай ответы, уже дали 2 ответа на вопрос. 5млн записаей это не много, время запросов не должно быть даже больше секунды. Гуглить "Индексы в MySQL"