Нет, set_query_var
не является локальным. Значение устанавливается глобально.
Да, его можно использовать несколько раз для одной и той же переменной, однако обратите внимание, что он будет сбрасывать значение каждый раз , поэтому убедитесь, что вы закончили с предыдущим значением перед его сбросом.
Но пока ваш шорткод хорошо написан, он должен быть в порядке.
Обратите внимание, что причина его использования (даже при передаче информации через глобальные переменные плохая практика), потому что в настоящее время это единственный способ передать переменные другим частям шаблона. Однако следующий выпуск WP (v5.5) наконец предложит способ передачи переменных между файлами шаблонов , и как только эта версия широко используется, это будет лучший и более чистый способ. для передачи информации между файлами шаблонов.
Передача аргументов в файлы шаблонов в WordPress 5.5