Where do child theme files live on the server?



I am trying to create a child theme of an existing installed theme in order to do some customization. I am not that familiar with WordPress, but I am familiar with web development in general. This is a one-click install of wordpress.

First I tried simply creating the minimal files needed for the child theme in wp-content/themes/newtheme. To do this I ssh’d into my server and added a style.css and functions.php. When I do it this way the new theme isn’t shown in the list on the Appearance > Themes page. I can use wp-cli to activate it, but my child theme’s style.css file 404s when the browser requests it. Directly requesting style.css in any of the adjacent theme directories works fine though.

I also tried uploading a theme zip file from within wp-admin, which worked, but I can’t find the files anywhere on the server after uploading them, which means I can’t continue to update the theme files via SSH or FTP as needed.

What am I missing here? How can I get a child theme into this install that can be managed via FTP/SSH?


This is a correct step.

This is also a correct step.

Possible because those files don’t contain anything. See https://codex.wordpress.org/Child_Themes for what they should contain.

You can also try enabling WP_DEBUG (https://codex.wordpress.org/Debugging_in_WordPress) to see what errors arise.


Thanks for the reply. Sorry, should have specified that I did set up the functions.php and style.css as needed. And those files work correctly as a child theme as long as I upload the theme as a zip from the WP admin interface. But if I do that, then I can’t find where the theme I uploaded actually went on the file system. It’s not in wp-content/themes, where I expect it to be.

It almost seems like wp-content/themes is not really where WordPress is loading theme files from, since files I put in there aren’t recognized and uploading a theme zip doesn’t wind up there either.


When you visit your site, the page source should show you where it’s pulling the child theme files from.

If you can’t track it down, then it’s possible your site isn’t using the installation server/user/whatever you think it is. (i.e. you’re not logging into your actual site).


This turned out to be the thing I needed to hear. I started digging and finally realized that http and https were hosted under different users within my DreamHost configuration, and I had an htaccess redirect from http to https, so in ssh I was always looking at the user who had the http stuff but I never saw that stuff in browser because of the redirect. I just needed to fix the user configuration for the https side.