How to Convert a Lovable Site to a WordPress Theme (Easier Than You Think)
Description
In this video, I show you exactly how I used Cursor to convert my Lovable-built design into a working WordPress theme.
No headless setup, no Supabase—just a clean transition from a React-style build straight into PHP.
I walk through the process:
→ Using Lovable to design a fully visual, drag-and-drop layout
→ Instructing Cursor to structure everything into a modular WordPress theme
→ Copying components like the homepage, sidebar, business listings, and more
→ Syncing it all with Smart Directory Pro, the plugin I’ve been building alongside it.
Useful for anyone building:
WordPress themes from AI designs
React → PHP transitions
AI-generated front ends with smart backends
Check out how I’m making Lovable + Cursor + WordPress work together and turning it into something slick.
😎 Join this channel to get access to perks & exclusive videos:
https://www.youtube.com/channel/UCGdOo5ARCSpxFQ-ssIsgi4Q/join
💎 Want to cut out all the noise, token burning, tears and go straight from idea to MVP? Join the private community https://www.skool.com/idea-to-mvp
🤖 Join our brand new community for No Coders here 👉👉 https://www.skool.com/no-code-agents/about
✚ Follow me on X where I share a tonne of value - https://x.com/ariellecpx
🗞️ Subscribe to my newsletter where I share even more value - https://ariellephoenix.com
⏺️ Screen Recorder software I use - https://bit.ly/40fjVjZ 👌🔥 this is my affiliate link so if you buy it, I will get a commission at no extra cost to you - it helps the channel, too!
No headless setup, no Supabase—just a clean transition from a React-style build straight into PHP.
I walk through the process:
→ Using Lovable to design a fully visual, drag-and-drop layout
→ Instructing Cursor to structure everything into a modular WordPress theme
→ Copying components like the homepage, sidebar, business listings, and more
→ Syncing it all with Smart Directory Pro, the plugin I’ve been building alongside it.
Useful for anyone building:
WordPress themes from AI designs
React → PHP transitions
AI-generated front ends with smart backends
Check out how I’m making Lovable + Cursor + WordPress work together and turning it into something slick.
😎 Join this channel to get access to perks & exclusive videos:
https://www.youtube.com/channel/UCGdOo5ARCSpxFQ-ssIsgi4Q/join
💎 Want to cut out all the noise, token burning, tears and go straight from idea to MVP? Join the private community https://www.skool.com/idea-to-mvp
🤖 Join our brand new community for No Coders here 👉👉 https://www.skool.com/no-code-agents/about
✚ Follow me on X where I share a tonne of value - https://x.com/ariellecpx
🗞️ Subscribe to my newsletter where I share even more value - https://ariellephoenix.com
⏺️ Screen Recorder software I use - https://bit.ly/40fjVjZ 👌🔥 this is my affiliate link so if you buy it, I will get a commission at no extra cost to you - it helps the channel, too!
Summary
How to Convert a Lovable Site to a WordPress Theme - Step-by-Step Guide
In this detailed tutorial, Arielle demonstrates how to transform a Lovable-built design into a fully functional WordPress theme using Cursor AI. Unlike headless WordPress setups, this method creates a traditional WordPress theme from a React-style build, resulting in a clean PHP implementation.
The video walks through the entire conversion process, showing how Lovable's visual drag-and-drop interface provides an ideal starting point for designing WordPress themes. Arielle explains how she instructed Cursor to structure her directory website into a modular WordPress theme with proper component organization including headers, footers, homepage layouts, and business listings.
Key highlights include how this approach solves common WordPress theme development challenges:
- Creating color schemes that are easy to customize through WordPress Customizer
- Ensuring seamless integration between the theme and Smart Directory Pro plugin
- Converting React components to PHP while maintaining animations and visual elements
- Building modular, well-structured code that makes future updates simpler
Arielle shares practical workflow tips, including creating a conversion rules file to guide Cursor, setting up a local development environment, and maintaining a changelog to track progress. She emphasizes the importance of proper taxonomy handling to ensure business pages and categories display correctly.
The video demonstrates the impressive results of this conversion process by comparing the original Lovable design with the finished WordPress theme, showing how accurately the visual elements, layouts, and functionality have been preserved. Particularly noteworthy is how the theme integrates with the Smart Directory Pro plugin to handle maps, business listings, reviews, and AI-generated content.
This technique is especially valuable for developers who want to leverage AI design tools like Lovable while creating traditional WordPress themes rather than headless setups. The approach provides greater control over customization options and ensures compatibility with WordPress plugins while maintaining the visual fidelity of the original design.
Transcript
0:00
Okay, in this video I'm going to share
0:02
how I've been using Cursor to turn my
0:06
lovable build into WordPress themes. So,
0:09
I've spoken about this before. I've
0:12
mentioned that you can use WordPress as
0:14
a you can use a a headless WordPress
0:17
CMS. So, you could have WordPress as
0:19
your back end. You don't have to use
0:21
Superbase, but you can build a React or
0:24
Nex.js front end and then you can have
0:28
WordPress as your back end. But you can
0:30
also just make the whole thing a
0:32
WordPress theme and then use plugins. So
0:35
that's exactly what I've done to build
0:37
my directory tool. So if we head over to
0:41
um mk.d directory, this is where I've
0:43
got the current uh theme and build. So
0:46
this was all designed in cursor. This
0:48
entire WordPress theme was created in
0:50
cursor. Um everything just everything
0:54
everything that the design the
0:55
functionality the animations this is all
0:59
uh me instructing cursor but we love how
1:03
lovable works. We love how lovable works
1:06
how it designs how how we can easily
1:08
manipulate the designs and just see it
1:11
in front of us. and cursor. Although it
1:15
does do very well with uh designs like
1:18
general, you can give it a prompt and
1:20
create a vi and react or next.js site
1:23
really well with WordPress themes. I
1:25
don't know if maybe it's not trained on
1:27
as much data for WordPress, but the
1:30
themes usually leave a lot to be desired
1:34
and you've got a lot of tweaking to do.
1:36
So, what I've been doing is redesigning
1:40
this. So, this is cool, but we can do
1:43
better. And I want I want better. And
1:45
also, I want this this whole the ease of
1:49
color schemes and things like that. And
1:51
again, lovable is amazing with that.
1:54
It's not taken that many prompts to get
1:56
this. So, my initial prompt, I gave it
1:59
the I just copied and pasted what I had
2:02
and I told it that I wanted to create a
2:04
directory landing page that would be
2:06
perfect for turning into a WordPress
2:09
theme. a WordPress site. So with that,
2:12
it would structure it in a way that it
2:14
would be easy for cursor to pick up and
2:18
convert into a theme. So that's exactly
2:20
what I've done. This is where I'm at so
2:22
far. Looks pretty much the same. Let me
2:26
just swap between them. Yeah, it looks
2:28
it looks the same. Like everything
2:30
everything I've asked it to do except
2:32
for the popular categories because these
2:35
icons are maybe shaden or something
2:38
else. So, small things that need to be
2:40
done, but what I'm doing is converting
2:42
it page by page. So, we've got the
2:45
featured businesses. Uh, if we click on
2:47
one of them, I'm building it out. Let me
2:50
just go over to one of these ones. As
2:52
you can see, the design is exactly the
2:54
same. So, it's been
2:57
copying the files, the everything it can
3:00
see, it's been replicating that into
3:02
PHP, which is absolutely this is
3:05
amazing. So again, everything. This one
3:07
doesn't have Does it have reviews? No,
3:09
this one doesn't have reviews, but look,
3:11
it's got the photos. These don't work to
3:13
enlarge, but it's done everything. It's
3:16
doing everything in the same way that
3:19
I've designed it in lovable. So, let me
3:21
see if I can Which one has reviews? I
3:24
need to find one with
3:26
reviews. Yeah. So, again, something's up
3:29
with this. Uh, it's it's treating this
3:31
side as the sidebar. So, small things
3:33
that need to be done, but essentially
3:35
it's copied the design. So, this is
3:39
React design and it's just being
3:41
converted into PHP and I'm just making
3:43
sure that the animations and whatnot are
3:45
in line. So, that's something that you
3:47
can do. So, you don't have to do the
3:49
headless CMS option. Granted, it would
3:52
be much quicker to just do the headless
3:55
CMS option, but again, this is for the
3:58
directory plugin. So, I've created Smart
4:01
Directory Pro and I've built this plugin
4:03
which is what you can see. So, when we
4:05
click through here, this is all the
4:07
plugin. The map, the about section, the
4:10
AI generated content, the imported
4:13
reviews, all of that stuff is the
4:15
plugin. And then everything else that
4:17
you can see is the theme. So, that's
4:20
what I'm doing now. It's just
4:21
redesigning the theme and reinforcing
4:24
the things that I want to in the plugin.
4:26
And again, I'm just going to go bit by
4:28
bit and get it
4:30
to build these features in. So, one of
4:33
the things that I was having issues with
4:35
with the native, like the WordPress
4:38
native theme that I built with that uh
4:40
customizer was having trouble. like
4:43
everything I wanted to do. If I want to
4:46
change the color scheme, I've got to go
4:48
back and forth with cursor to get it to
4:51
make this something that's easy to
4:54
change in customizer. And then that gets
4:57
finicky because you've got to change the
5:00
background for lighter buttons and
5:03
things like that. So there was quite a
5:05
bit of conflict. So I decided, let me
5:07
recreate the theme. Let me start in
5:10
lovable and then I can design it exactly
5:12
how I want it. Keep it clean and then
5:14
factor in this color scheme because look
5:17
at this. So everything that I can do
5:19
here I'll be able to do in the WordPress
5:21
theme. So that's where I'm at now. So
5:23
what does this look like in cursor? How
5:25
can you actually do this? The first
5:27
thing that I did is I told it what I was
5:29
going to be doing with it. So initially
5:32
when I I started the site, I told it
5:35
that I wanted to eventually turn this
5:37
into a WordPress theme and then when I
5:39
was happy with it, I reinforced it. So I
5:41
said, "So I'm going to be converting
5:42
this theme into a WordPress theme. So I
5:45
need to make sure that all of my React
5:46
folders are prepared. Can you do this?"
5:48
And then I've said, "It needs to be well
5:50
structured with modular components,
5:52
header, footer, homepage, all of that
5:56
stuff." And then it says, "Look, I
5:58
already know this. That's exactly how
5:59
I've built it. So there's nothing else I
6:01
have to do. And then I've downloaded
6:03
this file and I've given it to cursor.
6:05
So here we've got it here. Uh all the
6:08
files inside it. And then I've created a
6:12
conversion rules file or just the MDC.
6:16
And that's just got more instruction
6:18
telling it what I want it to do the just
6:21
everything that I would want it to do to
6:23
convert to WordPress. And this is
6:25
something that you can get Lovable to
6:27
do. You can tell it to make this file or
6:29
you can go to Claude or Chat GPT and get
6:32
it to make you a conversion file. And
6:34
then the next thing you want to do is
6:36
get your local environment set up. So I
6:39
should have used Docker. I usually I use
6:43
Docker the first time around and I found
6:47
it I found it easier because it could
6:51
manipulate the WP admin and all of that
6:55
stuff. And to be honest, cursor, it can
6:56
still do it, but I shouldn't have opened
7:00
the WordPress content folder only. So,
7:03
I'm only in the WordPress content
7:05
folder. Whereas with Docker, it sets up
7:08
the entire virtual environment. And then
7:11
you've got uh WordPress content, you've
7:13
got WP admin, and then you've got access
7:15
to the WP config file if you need to up
7:18
the memory or do anything like that. The
7:21
reason I chose to just use WP content is
7:24
because I want to focus on the theme and
7:26
the plug-in file. So, anything that I do
7:30
is it's easy to replicate because when I
7:33
package the theme and the plug-in to
7:35
give to people, I want them I want to
7:37
know what experience they're having and
7:38
have the same experience. Whereas, if
7:40
it's accessing all the other folders and
7:42
tweaking things that I wouldn't have
7:44
access to if I'm giving somebody the
7:47
plugin or the theme, then I'm not going
7:49
to know. I'm I'm not going to I'm not
7:51
going to know how it would behave on
7:53
somebody else's installation. So to
7:56
minimize any tweaking with anything
7:58
outside of the theme and the plug-in, I
8:00
just said, "Let me just open up the WP
8:02
content folder." And the result is yes I
8:06
get to see how this will work for other
8:09
people but also I have to now when I
8:12
need to debug something I have to create
8:15
a separate log an download that log
8:18
analyze it give it to cursor and whatnot
8:21
but yeah for the most part it's been
8:23
it's been fairly simple what I would say
8:25
is when you're prompting cursor to do
8:27
this have your conversion file and then
8:31
every time you start a new chat you're
8:33
going to need to tag that that file and
8:36
remind it what you're doing because it
8:37
it doesn't know. It's not just going to
8:39
follow on. It will do its own thing. So,
8:42
every time I prompt it, I say uh I tag
8:46
the conversion file and I'll tag this
8:49
folder. So, it will look something like
8:50
this. Let me start a new
8:53
chat and I'm going to It's already got
8:56
it tagged. So, I'm going to So, it's got
8:58
the conversion file tagged, and then I'm
9:00
going to say something like um
9:03
let's continue
9:07
uh
9:08
converting this build and then I'm going
9:11
to tag that. So, just copy path because
9:15
we can't tag the folder. Um let's let's
9:19
continue converting this build
9:23
into a WordPress theme.
9:27
And I'm going to put the actual theme in
9:29
brackets. So this is my theme here. Copy
9:35
path. And um what was the next thing? So
9:38
let's continue converting this
9:41
build into a WordPress theme.
9:46
Uh let's check let's check
9:49
over what we have already
9:55
replicated and
9:57
um make sure everything
10:02
is this is why I use voice to text
10:04
instead is in line with and then I've
10:09
got my plugin as well. So again, this is
10:11
why I wanted this controlled environment
10:13
because I've got my theme and my plugin.
10:16
These are both in the
10:17
WP content folder. So,
10:24
uh, so,
10:31
um, let's let's make sure let's make
10:35
sure everything is in line
10:37
with the
10:41
plugin and build any missing
10:46
pages. Oh, ages. So, let's put that over
10:49
there for a second
10:51
and see what else we need. Do we have
10:55
the submit page? That was that was
10:58
something to submit your business. I did
11:01
see it
11:02
before. Let's go here. Submit your
11:05
business. Okay. So, we've got this. So,
11:07
it will replicate this
11:09
page and it's done the footer
11:14
already. And then this the footer is has
11:17
already been set up in customizer. It's
11:20
it's made it so much easier to set up
11:22
the customizer, the header, those kind
11:25
of things. You've got map settings here.
11:28
I'm not going to click on it because it
11:29
shows the Google Maps API, but that
11:32
allows the street view to show up if the
11:34
business if you've imported the
11:36
longitude and latitude. So, uh that will
11:39
show up there. And uh footer settings
11:42
here. We've got all of this stuff. It's
11:44
just made it so much easier to edit
11:46
these things. And as I go, I'm just
11:48
making sure that all of the sections can
11:50
be edited in
11:53
customizer. So yeah, pretty pretty
11:57
awesome. This is what it said. Okay, I
12:00
have the directory
12:01
listing source build typical modern web
12:04
development structure blah blah blah.
12:07
And then it looks at the
12:09
structure which is what Lovable built
12:12
and the target theme which is what we're
12:14
working on. Uh analysis next step. So
12:17
build versus theme structure. So it
12:19
compares where we are with the theme
12:22
that we're building in comparison to the
12:26
the template and plug-in interaction.
12:29
Making sure it all coincides with the
12:31
plugin. And that that's very important.
12:33
If you're not building a plugin with it,
12:35
of course, it doesn't matter.
12:37
Why it matters is the taxonomy. So every
12:40
all the business pages, the business
12:42
categories, all of those things, they
12:44
need to be picked up and acknowledged by
12:48
the theme. You it otherwise it will just
12:50
do its own thing. It will just create
12:52
its own things and then the content
12:54
won't show up. So very important. And
12:56
then it says to proceed effectively. It
12:59
wants to
13:01
know the main page views that were part.
13:04
It wants to know, but I'm just going to
13:05
tell it to look at the files, which is
13:07
the whole point. And then it wants to
13:10
examine the
13:11
template within the plugin to see what
13:14
templates it provides. So again, these
13:16
are things I'm going to tell it to do to
13:18
analyze the files before it writes any
13:21
code. And then we'll just go from there.
13:23
And I probably need to get it to create
13:25
a change log, which I thought it did the
13:28
last time, but never mind. We'll just
13:31
get it to do that. And I highly
13:33
recommend creating and keeping a change
13:35
log because just as I did with this, you
13:37
could tag it in the call and then it
13:39
will see what it's done and what it
13:41
needs to do. Um, so yeah, that's pretty
13:44
much it. You just have to take it step
13:46
by step. There may be an easier way.
13:48
This has been working and this way I get
13:50
to get very granular with the things I
13:53
want to do and of course make sure that
13:55
it interacts with the plugin and does
13:58
everything I need it to do. So, all the
14:00
different elements all work together. Uh
14:02
otherwise, it wouldn't really work. The
14:04
plugin with another theme, you're going
14:06
to have to do a lot of tweaking. And my
14:08
whole thing is making sure it's as
14:11
simple and as clean as possible. And
14:13
then any updates once we've got the
14:15
child theme, any updates are just going
14:17
to be seamless. So, that's it guys. If
14:20
you found this video useful,
14:21
interesting, anything, drop a comment,
14:24
drop a like, subscribe. It helps the
14:26
channel and it helps me and my morale to
14:29
keep creating videos. So, on the next
14:31
one.