Locate the rejection during installation
You select a ZIP file in the theme installer and WordPress reports that the style.css stylesheet is missing. This message concerns recognition of the package you just submitted. It does not necessarily mean the public site's styles have disappeared. The already-active theme may continue working while installation of this new package fails.
Three situations need separating. The file may be a plugin sent to the theme installer. It may also contain a complete delivery, including documentation and internal archives, rather than the directly installable theme. Finally, it may be a theme whose structure or certain files were actually lost during preparation. The correction depends on this distinction.
Do not immediately create an empty file called style.css. This file also carries theme identification information, and its presence alone does not make a package functional. Adding a fake header to a plugin or incomplete delivery would merely move the problem elsewhere. The first goal is to find the correct product and its official package, then check what installation should add to the site.
Keep the initial package and record the screen used
Keep the original download in a clearly identified local folder. Work on a copy if you need to open or reorganize an archive. Record its exact name, size, advertised version and source. This information lets you ask the supplier for the correct file without repeatedly changing a package that becomes impossible to compare.
You do not need to activate the product immediately to establish that the correct installer recognizes it. Separate the decisions: obtain a correct archive, install the intended package, then possibly test activation and configuration. Each has its own observable result.
- Record the full error text and the screen displaying it. Appearance, then Themes, and Plugins, then Add New Plugin, are different routes even if their upload buttons look similar.
- Check the product name on its official page or in the supplied documentation. Look for its type: theme, child theme, plugin, template kit or demo file.
- Record the currently active theme and whether a folder already bears the new package's name. A troubleshooting installation must not overwrite a customized version without an appropriate backup.
- Prepare an authorized site copy for the first installation test. Keep a backup of useful files and settings if a theme change will subsequently be evaluated.
Confirm whether it really is a theme
A product adding a carousel, form or editing tool may be a plugin even if its screenshots show an entire page. Rely on the publisher's designation and installation instructions. The filename or marketing appearance is insufficient. A ZIP from WordPress.org's Plugins section must follow the plugin route.
A builder kit may instead contain templates to import through that builder. It is not automatically a WordPress theme. In that case, look in its documentation for the expected import tool and prerequisites. Do not successively try every import screen on the site until one accepts the file.
A child theme depends on a specific parent theme. It has its own identity and parent declaration; it must not be confused with a reduced version of the main package. Check both products' exact names and the supplied instructions. The parent may need to be present before the child can be activated correctly.
If the ZIP's origin is unknown or the delivery contradicts the official page, stop installation. Ask its owner for an identified archive. No repair plugin can usefully guess the nature of a file whose origin or intended product you do not know.
Route 1: use the correct installer for a plugin
This route applies only after confirming that the product is a plugin. Rejection on the Themes screen then makes sense: the installer expects theme structure and receives another product type. The solution is to use the official archive in its designated workflow, without adding a CSS file or changing its contents.
To roll back, deactivate only the newly tested plugin and check restoration of the initial state. Deletion may trigger product-specific cleanup; consult its rules before deleting it. Do not remove a plugin already used on the site merely because a first upload failed on the Themes screen.
- On the authorized copy, return to the dashboard. Open Plugins, then Add New Plugin, and choose Upload Plugin if you have an official ZIP.
- Select the identified original ZIP and start one installation. If WordPress offers to replace an existing plugin, compare its name and version with the initial record. Leave that version in place until its customizations and planned restoration have been checked.
- Check the result in the plugin list. The product should be recognized under the expected name. This recognition does not yet demonstrate compatibility with every site function.
- If activation is necessary for your goal, perform it on the copy with external outputs controlled, then test the intended function. Record added settings and any warnings before considering the real site.
Route 2: find the installable ZIP inside a complete delivery
Open the download in a local archive tool without running any included file. A delivery may contain a documentation folder, license files, demo resources and a separate theme ZIP. These elements explain why submitting the entire delivery to WordPress does not always match the expected package.
If no internal archive is documented, do not choose a ZIP at random. A file named demo may contain demonstration posts, and another named assets only images. Ask the supplier which delivery is the installable theme. Include the version and observed folder list in this request, without sharing a license key publicly.
- First read the publisher's instruction file. Identify the exact archive name to install and any distinction between main and child themes.
- If an internal ZIP is designated as the installable theme, copy that file into a separate working folder. Keep the outer download intact so you can return to its original contents.
- Open the internal ZIP and check its first theme folder. style.css must belong to this folder, not merely a documentation folder or another nested archive.
- Upload this internal ZIP through the copy's theme installer. Check the recognized name and version, then leave the theme inactive while checking dependencies and the available preview.
Read the folder structure at the correct level
The style.css file must sit at the level expected for the theme. A global search finding a file with that name somewhere in the download is insufficient. A package may contain several stylesheets named style.css, for example in documentation, an example or a dependency. Their position relative to the theme folder provides the useful clue.
For a delivery containing “theme-a-installer.zip”, open that internal ZIP and check that you directly find “mon-theme/style.css”, with the other theme files under “mon-theme”. The selection mechanism descends one level when extracted contents consist of a single folder. An archive containing “livraison/mon-theme/style.css” adds one level too many for this workflow. Obtain the installable ZIP identified by the publisher instead of recompressing the outer delivery.
Also check the file's actual extension. Some tools hide known extensions and may display style.css when the full name is style.css.txt. Check the name in properties or the archive's detailed list. However, do not rename an arbitrary document as a stylesheet: its contents must come from the intended theme.
A browser may automatically extract a download. If you no longer have the original ZIP, retrieve the installable file from the authorized official source or available delivery archives. Do not silently treat compression of an already-modified folder as equivalent to the original package. If you must rebuild an archive, document exactly what was included.
Route 3: check a theme prepared by your team
For a custom-developed theme, the project owner can inspect the delivery before generating it again. The style.css file contains a header identifying the theme. For a standalone theme, WordPress also expects an entry template appropriate to its architecture, such as index.php for a classic theme or templates/index.html for a block theme. A child theme follows a different check through its parent declaration.
The presence of style.css does not verify security, visual quality or compatibility. It lets WordPress recognize part of the structure. The theme still needs testing on its relevant pages before real activation. Avoid adding empty files solely to get past successive error messages.
- Compare the delivered folder with the reference project and its build procedure. Identify whether an exclusion rule omitted style.css, placed it in a subfolder or left it absent from the final artifact.
- Check with the developer that the style.css header contains the real “Theme Name”. For a child theme, “Template” must match the parent's exact folder name, rather than its displayed name. Retrieve these values from the reference project before rebuilding the package.
- Generate a new package through the project's procedure, with a version or delivery identifier distinguishing it from the rejected package. Retain the initial file and a record of differences.
- Repeat installation on the copy and record the new result. If the message changes to a missing template or version incompatibility, address that separate check instead of concluding that everything is fixed.
Use file access without overwriting the active theme
SFTP or file-manager access can help inspect a partial installation, but it does not replace identification of the correct package. Start by confirming the WordPress installation and content folder actually used. Hosting may contain a copy, an old site and the active site with very similar directory trees.
Then record the folders present in wp-content/themes and the active theme shown in the administration area. If a destination folder already exists, back up its exact files and customizations before any replacement decision. A transfer merging two versions can leave old files behind and make the result harder to diagnose than a clean installation.
For a genuinely new theme, the owner can place the complete theme folder at the correct level, following WordPress documentation. They must find style.css directly in that folder, then check that the administration area recognizes the theme. Uploading it does not justify immediate activation. Any parent dependency and stated WordPress and PHP requirements still need checking.
If you lack administration access, give the folder name, structure and package version to the site owner. Do not change the active theme in the database to force a test. Final confirmation must come from the installation actually serving the site, with recovery access available if activation is subsequently chosen.
Verify the result with separate controls
Organize checking around the package type. For a plugin mistakenly uploaded as a theme, the successful control is recognition in the plugin list. For a theme, it is recognition on the Themes screen with correct information. In both cases, the initial theme must remain active until you decide to test an appearance change.
Do not import demo content merely to check package recognition. That import may create pages, media and settings unrelated to style.css. Every additional operation must meet an identified need and have its own removal plan.
- Compare the recognized product with the official source: name, author, version and any dependency. A different name than expected requires checking before activation.
- For a child theme, check that the expected parent is present. Do not alter the parent declaration merely because another theme is installed.
- If activation is planned on the copy, test at least the homepage, a page, a post and navigation. Check customized areas depending on the old theme, as well as forms in use.
- Return to the initial theme to check rollback. Compare menus and settings with your record; returning to a theme does not guarantee that every plugin or demo import undid its own changes.
Restore the initial state and close the diagnosis
If installation failed without replacing an existing folder, first check that the active theme and its files have not changed. Do not delete random folders to clear an error message. A name resembling the package's does not prove that it came from your attempt; compare it with the inventory taken before testing.
If you added an inactive test theme, remove it only after checking that no child theme depends on it. If you replaced files, rollback must use the exact backup of the previous version and preserve changes others made since then. Avoid restoring an entire store to correct one theme delivery.
A useful report identifies the rejected file, its true nature, the package finally recognized and the result before activation. If the supplier must intervene, attach the archive's first few directory levels and error text, with license data hidden. The correction is established when the right installer recognizes the right product and the initial state remains recoverable; activation and functional staging checks remain separate steps.
List the ZIP without extracting or executing its files
With Python 3 already installed, this local read lets you see the archive's internal paths. It does not extract files into your WordPress folder. Adjust only the ZIP name; depending on your computer, the launcher may be python3 or py -3 instead of python.
In the names column, look for a path such as mon-theme/style.css, then the other files at the same level. A documentation/style.css result is not the theme stylesheet. A livraison/theme-a-installer.zip line indicates another ZIP still enclosed in the delivery: open the package designated by the publisher. Displayed names are clues, not a certificate of content reliability.
Without a terminal, open the ZIP with your system's archive manager and compare the same levels without running included files. No WordPress plugin is needed. If uncertain, send the supplier a short list of the first paths and the installation message, not your license key. Keep the original archive intact: rollback means abandoning the wrong package, not manufacturing a fake style.css.
python -m zipfile -l "theme-a-installer.zip"Sources and references
Use these references to check the features, requirements and limitations described. Reading documentation is not a practical test.
View 7 references
- WordPress — Case of a plugin uploaded as a theme ↗
- WordPress — Installing and managing themes ↗
- WordPress — The role of style.css ↗
- WordPress — Theme structure ↗
- WordPress — Child themes and parent declarations ↗
- WordPress — Checking the theme package ↗
- Official documentation — List the ZIP without extracting or executing its files ↗


