Подумав немного, я понял, что есть очевидное решение. Итак, кто-то, вероятно, написал плагин для этого, а кто-то имеет - https://wordpress.org/plugins/inline-php/.
Он состоит из около 40 строк PHP. Критическая уловка реализации состоит в том, что это делается не как шорткод, а как фильтр the_content.
add_filter('the_content', 'inline_php', 0);
Это делается перед другой обработкой фильтра 'the_content' и позволяет избежать всех проблем, с которыми я столкнулся, пытаясь использовать его в качестве шорткода. Конечно, существует значительный риск для безопасности.