How do I change the front page? (or stop the front page template from overriding the front page)

It seems like you figured it out, but for the sake of clarity, and in case it helps someone else:

It appears that you went to the site editor, hit the + to make a new template, and accepted the default for which kind of template you wanted, which was “Front Page.”

You then wanted to use the template at a different url, but, not knowing that front page was special, you got stuck. Then you figured out that you could copy and paste the code into a new template and use that, so you did, and it worked. Yes?

Here’s some background that might demystify the experience.

  • The Front Page template is only for the default page (the home page you get with just the domain name: If it exists, it is used for whatever content ends up being served at the base url, regardless of template settings, etc. and it will never be used for a page at any other url.

  • You couldn’t find the “Front Page” template in the page editor because “Front Page” never needs to be in that list, since the only criteria are if it’s the home page or not.

  • You couldn’t find the template file, because there isn’t one. The files on disk in a theme that supports the site editor, like 2023, are the defaults. They stick around so you can always revert to them. All new templates, and changes you make to existing templates are stored in the wp_posts table in the database with a custom post type of ‘wp_template.’ So your new front page template is only in the db, not on disk.

  • You don’t need to have a “Front Page” template at all. If it’s not there, you can select the template you want in the page editor. (In fact, the only template a theme actually has have to have is index.)

  • In an old-school theme, php templates are in the theme directory, here: {site-root-dir}/wp-content/themes/{your-theme-directory}/front-page.php

  • In Gutenberg 2 themes like 2023, the templates are stored as html with special comments standing in for where php used to do stuff, like instead of include “header.php” you get

I hope that helps somebody, sometime, as much as researching this answer helped clarify it for me