Best way to find out which php file has generated an html line of code in WordPress
Use this plugin "what the file" to find out the php file. Then rest it is to find out a function or something else by CTRL + F in any editor.
I want to add one more plugin which is not exactly for this purpose but it is very popular among WordPress developers and it solves this problem very well. The plugin is Query Monitor.
Put an echo in your PHP pages to print their name in an HTML comment based on whether a session variable is set. Then set that session variable and enjoy.
if(isset($_SESSION['printPageName']) && $_SESSION['printPageName']=='true')
{
echo '<!-- ' . $_SERVER['PHP_SELF'] . ' -->';
}
The reason I say to use a session variable is so you can create some mechanism to where you can occasionally look at this for debug purposes, but users don't normally encounter it.
Unfortunately with wordpress you need to do some digging:
- Is it a page/ post / custom post (i.e. you can find the page in the admin section and edit it)
- If yes - look at the template assigned (posts don't usually have a template select field unless custom code added) and find the matching page template in your theme (page-whatever.php)(it might not be called what you see in the dropdown field, but in its notes it will have the name you see), or if a post you are looking for single.php or if custom post look for single-whatever.php.
- The above is default and will cover 60% of situations. But if you add a plugin and it adds new pages, the page template will be in the plugin and the real fun starts.
- If a plugin is developed with user mods in mind, it should have its pages in 1 location or in a functional set folder. Have a look for the above files in these locations if they exist or in the general plugin folders.
- If still no luck, have a look for
add_action('save_post', 'whatever');
there may be code statingreturn $template
, this will prob also have the post type in the function. Look for the path its calling - Another way to add a page is through a url rewrite (search through the files for rewrite). It will contain a path somewhere to the file (there are a couple of methods of doing this so look them up so you will recognise them).
If you think you have found the correct template, try a echo to see if it appears on screen. If yes you have found the template, look at what you have follow the includes/ requires to appropiate .php files, you'll find your html somewhere either as html or php code creating html.
hopefully you find what you are looking for, but there are no rules really and other methods can exist including htaccess rewrites to point to php file, etc or a functions file creating pages on the fly
This might be a good point to mention if you ever create a entire plugin, store files logically and include from a file controller or plugin file. Store pages in a pages folder so they are easy to find.
Good luck!
update: filter to output path on template files
add_filter( 'template_include', 'show_path', 99 );
function show_path( $template ) {
if($template):
echo $template;
else:
echo "template path not found";
endif;
return $template;
}