Can I have both front-page.php and index.php?

When a theme has the front-page.php template, it will take over regardless of what you set in the admin pages to be your front page.1 This means you have a couple of options:

  1. Create a page template with your loop and styles that are currently part of front-page.php, apply that template to a new page you create in WP, then assign that new page to be your static front page in the Admin settings (Settings → Reading → Front page displays → Front page).
    Then create a page with your regular loop and styles for your blog index page, assign it to a new page in WP, and set it as the front page for your blog posts (Settings → Reading → Front page displays → Posts page).
  2. Consider adding the home.php template to the mix so that it handles the “regular old posts page.”2

I’d recommend #2, since it avoids having to create 2 more pages inside WP that are just there to trigger the template files. Since the loader already looks for the front-page.php and home.php templates, those pages will load faster if the templates are in there and used properly.

UPDATED 1/16

Okay, here’s a bit more background…

  • If you have the front-page.php template and “Your latest posts” selected, the home page of your site will use the front-page.php template.
  • If you have the front-page.php template and home.php and “A static page (Front page)” selected but nothing selected for “Posts page”, the home page of your site will use the content of the page you selected with the front-page.php template and index.php for posts (ignoring home.php).
  • If you have the front-page.php template and home.php and “A static page (Front page)” selected and a “Posts page” selected, the home page of your site will use the content of the page you selected with the front-page.php template, and the content of the page you selected with the home.php template.

It can get a bit complex, especially since there’s so much flexibility involved. It was something I had to go back and play with again just to refresh my understanding.

The main purpose is to have something distinct on the front page (completely different layout, different colors, different header, etc.) while having the option to swap out the home page content just by selecting the page you want to use. You can also have the main blog page slightly different than the rest of your single posts or pages, which is where the home.php comes into play.

/update

Refs: