You’re using the single_template
hook, which is called for a single post. From the Codex:
The “single_template” filter can be used to load a custom template for
a given post. It will replace the template used whenever the “single”
template is called.
My guess is that this can probably be achieved by using the template_include hook:
This filter hook is executed immediately before WordPress includes the
predetermined template file. This can be used to override WordPress’s
default template behavior.