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

  1. Go to Appearance → Themes → Add New Theme.
  2. Search for the theme by name, or browse by feature.
  3. 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:

  1. Appearance → Themes → Add New Theme → Upload Theme.
  2. Choose the theme’s .zip file and click Install Now.
  3. 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.

  1. Unzip the theme on your computer.

  2. Connect with an SFTP client (FileZilla, WinSCP, Cyberduck) using your server’s SSH credentials.

  3. Upload the theme folder to wp-content/themes/.

  4. Make sure the web server user can read it:

    chown -R www-data:www-data /var/www/example.com/wp-content/themes/my-theme
  5. 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.

  • WordPress
  • Themes