Nice sleuthing. Every single person on this SO site has been foiled by something exactly like this at one point or another with the WordPress template hierarchy.
You might think of this backwards though. All the steps you found lead you back to the shortcode [pmpro_account]
which gets output in the loop-myaccount.php
by way of the_content()
.
That shortcode is defined in their code base like this:
add_shortcode('pmpro_account', 'pmpro_shortcode_account');
That’s telling WordPress: when you sees the [pmpro_account]
shortcode, run the function called pmpro_shortcode_account
. In that same file, up at the top, is a function called pmpro_shortcode_account()
. That function has all of the HTML and logic in it.
It doesn’t look like they have a way to overwrite that code via filter but I’ve never used the plugin so I can’t say for sure. They have a list of all of the available hooks and filters in their docs.
If worse comes to worse and you need to change the HTML output. you could remove the shortcode call from the editor and try replicate the functionality of pmpro_shortcode_account()
within your loop-myaccount.php
template.