Neither are correct. Just use show_foo()
:
<?php echo show_foo(); ?>
The only reason to ever use shortcodes is to insert dynamic content into a page or post from within the editor (Although, these days the ‘proper’ way to do that would be with a block, although that’s more difficult).
Shortcodes should not be used for outputting content into templates, because parsing the shortcode with do_shortcode()
is completely unnecessary overhead.
do_action()
is also redundant when outputting code into a template, because you can also just run the callback function directly. The only reasons you’d use do_action()
are:
- If you wanted to allow other developers to remove the function from the template with
remove_action()
. - You wanted to allow other developers to add their own functions to that specific part of the template.