Before you start: audit the live website
Open the site in a browser and list its distinct page templates — homepage, blog post, contact page, product listing — since each will likely map to its own PHP template file (index.php, single.php, page.php, archive.php) in WordPress's template hierarchy.
Note anything dynamic: contact forms, sliders, filtering, cookie banners. These usually rely on JavaScript files that need to be re-enqueued properly in WordPress rather than linked with plain <script> tags, or they may silently stop working after the move.
Step 1: create the theme folder and style.css
In /wp-content/themes/, create a new folder for your theme and add a style.css file starting with a comment block that includes Theme Name, Theme URI, Author, Description and Version — this header is what WordPress reads to list the theme under Appearance → Themes.
Copy the site's actual CSS into this file (or link it as a separate stylesheet enqueued in functions.php) — the WordPress requirement is only that style.css exists with the header; the rest of your styling can live wherever makes sense.
Step 2: split the HTML into template parts
Copy everything above the main content into header.php, ending with wp_head() right before the closing </head> tag, and everything below the main content into footer.php, starting with wp_footer() before </body>. These hooks are required for plugins, analytics scripts and many builders to function.
The remaining content section becomes your index.php (or page.php/single.php), where you replace static placeholder text with WordPress's Loop — the_title(), the_content() — if you want the page to pull from the WordPress editor rather than staying hardcoded.
Step 3: build functions.php
functions.php is where you register navigation menus with register_nav_menus(), register widget areas with register_sidebar(), and load your CSS/JS with wp_enqueue_style() and wp_enqueue_script() rather than raw tags — this avoids duplicate loads and version-caching issues.
This file is also where you'd add theme support flags like add_theme_support('post-thumbnails') if the original design used featured images.
- Register menus so the original nav bar can be managed from Appearance → Menus
- Enqueue every CSS and JS file the site used, matching original load order
- Add theme support for featured images, custom logo and HTML5 markup
- Register any sidebar or footer widget areas the design needs
Step 4: add a screenshot and install
Save a 1200x900 screenshot.png of the homepage in the theme folder so it displays correctly in the theme picker, then zip the whole folder and upload it via Appearance → Themes → Add New → Upload Theme, or drop it directly into /wp-content/themes/ via FTP or SFTP.
If the zip exceeds your host's upload limit, check the max upload size in .htaccess or php.ini — shared hosts commonly cap this at 2MB or 8MB, which trips up sites with large images or bundled fonts.
A faster route: browser-based conversion
If the goal is simply to preserve the live design rather than rebuild deep dynamic functionality, tools like Themify can shortcut steps 1 through 3 by capturing the rendered page directly in the browser and generating the style.css, index.php, header.php, footer.php and functions.php automatically as a downloadable theme .zip, all without uploading your source anywhere.
This suits marketing sites, portfolios and landing pages well; for sites with heavy custom logic — membership areas, complex product catalogs — manual conversion still gives more control over how that logic is rebuilt.
Testing and going live
Activate the theme on a staging environment first, click through every page, resave permalinks under Settings → Permalinks, and confirm forms submit correctly. Check the browser console for 404s on CSS or JS files, which usually means an enqueue path is wrong.
Once live, submit the sitemap in Google Search Console and set up 301 redirects for any URLs that changed, so existing rankings and backlinks carry over instead of resetting.
Frequently asked questions
- Can I convert any website to a WordPress theme?
- Most static or mostly-static websites can be converted. Highly dynamic apps with server-side logic (checkout flows, user dashboards) need that logic rebuilt separately in WordPress, not just copied over.
- Do I need to know PHP to convert a website to WordPress?
- For a fully manual conversion, yes, at least basic PHP. Browser-based tools like Themify avoid this by generating the PHP files for you from the rendered page.
- What is the minimum file WordPress requires to recognize a theme?
- A style.css file with a valid theme header comment block and an index.php file are the minimum WordPress needs to list and activate a theme.
- Will converting to WordPress hurt my SEO rankings?
- Not if you keep URLs the same or set up proper 301 redirects, keep title tags and meta descriptions intact, and resubmit your sitemap in Search Console after launch.
- How do I keep my existing site's animations after conversion?
- Make sure every JS file is properly enqueued with wp_enqueue_script and loaded in the original order; browser-based converters that capture the rendered page tend to preserve animation timing more reliably than manual copy-paste.
