На локальном все работает корректно - посты выводятся рандомно через обычный WP Query. На сервере с включенным кешем посты не обновляются. Нужно сбрасывать кеш.
видимо кешируются запросы в базе, но все равно orderby=rand не надо использовать, это очень медленный запрос, все посты перетряхиваются. Получите id последних ну я не знаю 100 постов в массив, положите в транзитку, там где у вас запрос берите из этих ста n случайных чисел и делайте запрос с posts_in