There are several ways to install a WordPress theme. Which one you use depends on where the theme comes from and how much access you have to the server.
Before you start
- Back up the site (files and database), especially if you’re replacing an active theme.
- Use a staging copy for big design changes.
- Download premium themes from the developer’s account area; marketplace downloads sometimes contain the theme ZIP inside another ZIP with documentation.
Method 1: From the WordPress theme directory
- Go to Appearance → Themes → Add New Theme.
- Search for the theme by name, or browse by feature.
- Click Install, then Activate (or Live Preview first).
Themes installed this way receive updates through the dashboard.
Method 2: Upload a ZIP file
For premium or custom themes:
- Appearance → Themes → Add New Theme → Upload Theme.
- Choose the theme’s
.zipfile and click Install Now. - Activate it.
Common errors:
| Error | Fix |
|---|---|
| “The uploaded file exceeds the upload_max_filesize directive” | Increase PHP limits (see below) or use SFTP |
| “The package could not be installed. The theme is missing the style.css stylesheet.” | You uploaded the wrong ZIP — unzip the download and find the inner theme ZIP |
| “Destination folder already exists” | The theme is already installed; delete it first or update it instead |
To raise upload limits on your own server, edit PHP’s php.ini (or the PHP-FPM pool config):
upload_max_filesize = 64M
post_max_size = 64M
…and in Nginx, client_max_body_size 64m;. Reload PHP-FPM and Nginx afterwards.
Method 3: SFTP
Useful for large themes or when the dashboard upload fails.
-
Unzip the theme on your computer.
-
Connect with an SFTP client (FileZilla, WinSCP, Cyberduck) using your server’s SSH credentials.
-
Upload the theme folder to
wp-content/themes/. -
Make sure the web server user can read it:
chown -R www-data:www-data /var/www/example.com/wp-content/themes/my-theme -
Activate it in Appearance → Themes.
Avoid plain FTP — it sends passwords unencrypted. If your server has SSH, you already have SFTP.
Method 4: WP-CLI
The fastest way on a VPS:
cd /var/www/example.com
# From the theme directory
sudo -u www-data wp theme install astra --activate
# From a ZIP file or URL
sudo -u www-data wp theme install /tmp/my-theme.zip --activate
# List and update themes
sudo -u www-data wp theme list
sudo -u www-data wp theme update --all
What about hosting control panels?
If your server runs a control panel such as cPanel, HestiaCP or CyberPanel, you can also upload and extract the ZIP with its file manager into wp-content/themes/. It’s the same as the SFTP method, just in a browser. See our guide on installing cPanel/WHM on a VPS if you’re deciding whether you need a panel at all.
Use a child theme for customizations
If you’ll edit theme files (templates or functions.php), create a child theme so updates don’t overwrite your changes. A minimal child theme is a folder with a style.css:
/*
Theme Name: My Theme Child
Template: my-theme
*/
…and a functions.php that loads the parent styles if the parent theme requires it. Many popular themes offer a ready-made child theme download.
After installing
- Check menus and widgets — they’re assigned per theme and may need reassigning.
- Review the Customizer or Site Editor settings.
- Test key pages on mobile and run PageSpeed Insights. See responsive WordPress themes for what to look for.
Hosting WordPress yourself? A WordPress VPS gives you SSH, SFTP and WP-CLI from day one.