Turns out the single-post.php template was missing a call to the_post()
. Since that function initializes all the postdata used by functions like the_content()
, WordPress had nothing to display.
As for Yoast SEO, I’m guessing it calls the_post()
somewhere early on which would populate the WordPress global variables. If the theme was written with Yoast SEO enabled, no one would ever have noticed the omission.