1 используйте API, которые есть в WP
запрос на сторонний сервер правильнее сделать с помощью через HTTP API
https://codex.wordpress.org/HTTP_API
2 правильно писать так, как вам и другим разработчикам будет позже удобнее работать с кодом
> использовать классы или же просто функциями
вопрос из разряда "что лучше - табуляция или пробелы". используйте тот подход, которым вы владеете в большей степени.
если идей, как организовать плагин нет, скачайте любой из гугла по "wp plugin boilerplate".
чего-то особо уникального там нет, подход везде примерно одинаковый.
отличаются названием функций/классов, путями и названием папок
>Как правильно это организовать, чтобы только после получения данных срабатывал шорткод?
в функции шорткода пропишите условие,
если данные есть - показывать, если нет - не показывать