top | item 40805351

Corcel – Use WordPress backend with Laravel or any PHP application

163 points| rob | 1 year ago |github.com | reply

53 comments

order
[+] dizaime|1 year ago|reply
Corcel has worked great for us, even in a production environment.

Our family's e-commerce business previously had a slow and bloated WooCommerce site, largely due to my skill issues. However, we were able to rescue the site by using Corcel, Laravel, Filament, and LunarPHP.

My wife still uses the WordPress admin interface as the main admin tool, while the public-facing website is rendered by Laravel, with data provided seamlessly through Corcel.

[+] n3storm|1 year ago|reply
in wordpress ecosystem do not blame yourself if you end up with a bloated site :)
[+] endofreach|1 year ago|reply
Oh, interesting. Can you provide more insights? Pitfalls?

I am in a very similar situation. Just it's not my families business. It's a friend e-commerce business that i supported & developed on the site for years. I wanted to move the product creation to a separate php application & sync via api. But those projects always explode.

How much time did you spend on this "migration"?

Is it a monolith? How does everything work together? What if you wanna leave the Wordpress DB schema behind at some point, would it be easy to "just" rewrite your backend models & DB schema?

[+] todotask|1 year ago|reply
After taking a quick look at your e-commerce site, you could simplify it further without compromising performance over personalization/technology stack if you have alternative options especially minimal codebase and CDN friendly.
[+] hu3|1 year ago|reply
If I understood correctly, this is basically a collection of Eloquent (Laravel's ORM) models that represent Wordpress database tables.

Nifty tool for PHP projects that need to interface with Wordpress data.

With how large the Wordpress market is, this is probably desired by more teams than one could think of at a quick glance.

[+] 3D30497420|1 year ago|reply
Agreed. I've been doing freelance design/dev for small businesses for 15+ years and at first I would always choose the best current CMS available. Wordpress was always an option, but it was clunky and had a mixed reputation. Well, all those CMSs are gone and I had to migrate several sites. Wordpress offers one of the most important things to these small businesses: (relative) consistency and dependability.

I can very much see the benefit of decoupling the front and back ends for these cases, especially since in most cases nowadays the public facing pages are pre-rendered/cached anyway. Also, I love Laravel.

[+] benatkin|1 year ago|reply
It circumvents the GPL unless you have a very unusual interpretation or have it putting GPL code into your database, with better performance and less complexity that the REST and GraphQL wrappers that are common ways to do headless WordPress.
[+] cess11|1 year ago|reply
Looks to me to be a bit more than that in the repo.

Not sure if this is a thing in Laravel yet but usually it's easy to generate ORM classes from an existing database. Symfony has it in their CLI tool, or had back in 2019 when I last used it.

[+] crooked-v|1 year ago|reply
I can see why people would do this with existing WordPress setups, but would there be any reason to consider it for a new build over a dedicated headless CMS (like Strapi or a bunch for PHP I don't know well enough to name) or headless CMS SAAS (like Prismic)?
[+] ianhawes|1 year ago|reply
We migrated from WordPress to Prismic several years ago, then migrated to Strapi a year ago, and it has been miserable.

We originally used Corcel with our Laravel installation, but somehow still found malware, so we immediately decommissioned the entire WordPress install and switched to Prismic. Prismic worked great and I regret switching to Strapi, but I felt the extensibility would be better (and latency reduced) if we self-hosted our headless CMS.

Managing Strapi is a full-time job, and their support for things like localization and their API are terrible. Don’t believe their marketing hype.

[+] dotancohen|1 year ago|reply
Yes. Every content manager and content writer knows and loves Wordpress. It's only developers that hate Wordpress. Corcel lets those content people use the tools they like, and lets developers build secure, performant, maintainable websites.
[+] saltybytes|1 year ago|reply
How's Corcel different to using WP's own API? What are the pros / cons?
[+] kayodelycaon|1 year ago|reply
A direct database connection means almost all of your queries will work without any error handling. Using an API requires you to handle lost connection every time you make a request.

Direct database connections almost always are orders of magnitude faster, especially when joins are involved.

[+] philipwhiuk|1 year ago|reply
This is a good mid-migration step but I'm not sure the WP database design is of particular merit otherwise.

(This is speaking as someone who just migrated a site TO WordPress because it was still better than the previous system...)

[+] jonwinstanley|1 year ago|reply
Agreed. Presumably people want to keep years of posts and pages plus the familiar admin interface.
[+] chiefalchemist|1 year ago|reply
Can someone explain the sweet spot here? WP has a REST API. It has a GraphQL plugin. Whether you use those via BE or FE requests, the backend is already open to anything.
[+] jackconsidine|1 year ago|reply
This is very cool! It always felt like PHP was behind in tooling - git-driven CI was challenging for WordPress (because the framework's plugins edit the project files and it is married to subversion), and serverless PHP was basically impossible until Laravel Vapor came along. Projects like this give me hope and excitement. I wish Corcel was around years ago when I had to write gross SQL string interpolation for various WordPress projects.
[+] djxfade|1 year ago|reply
PHP hasn't been behind in tooling, WordPress has (and still is). Frameworks like Laravel are very much up to par when it comes to tooling.
[+] devmor|1 year ago|reply
>serverless PHP was basically impossible until Laravel Vapor came along

I've got production PHP Lambda runtimes that predate Laravel Vapor by 7 years...

[+] rgbrenner|1 year ago|reply
Agreed on PHP tooling. I'm surprised more hasn't been borrowed from other frameworks. Working in this space too on serverless wordpress+mariadb[0]. We have a lot of open source tooling on our roadmap to make this as complete as serverless for other languages.

0. https://www.agiler.io

[+] moritzwarhier|1 year ago|reply
Curious about the name choice!

Is it derived from "coerce", because it can be pronounced like "core cell"? Or something else? Or just a made-up term? :)

Could imagine people being genuinely grateful for being able to plug another PHP application onto WordPress for the frontend, if this works well.

Great idea!

[+] TCattd|1 year ago|reply
In Spanish at least, Corcel means Steed. A horse. Like the beautiful one from Shrek 2.
[+] Onavo|1 year ago|reply
Like Vercel but cooler :)
[+] localfirst|1 year ago|reply
if this works it would completely change how we do things with wordpress.

1. does it work with any wordpress plugin? can i piggy back off laravel + frankenphp to scale what used to be nightmarish with wordpress?

2. does the underlying CMS UI still work for WP? Or is it built separately?

[+] gexla|1 year ago|reply
From skimming the docs, this is more about WP database than WP itself. In other words, you could install WP to setup the DB and then kill the WP install if you liked.

1. It looks like it only works with that which would be provided by WP by default. For example, the link below is an extension for working with Woocommerce. Given that WP doesn't even need to exist (you only need the WP DB) then you could use whatever setup is compatible with Laravel. You could also have separate environments with WP and Laravel sharing a remote DB.

2. Both WP and Laravel would work as if the other didn't exist. They only share the DB.

https://github.com/corcel/woocommerce

[+] aussieguy1234|1 year ago|reply
Ive had success previously using Symfony talking to the WordPress database.

Later, I used React to talk to the WordPress API, exposing the Customiser config as JSON, then getting React to render pages based of this.

[+] hparadiz|1 year ago|reply
I've had to do this manually so many times over the years.
[+] Implicated|1 year ago|reply
Have been using this for years to handle the auth in a Laravel application that's tucked inside of a WooCommerce shop, works great.
[+] ulrischa|1 year ago|reply
Useless. WP has a very good REST API
[+] tcfunk|1 year ago|reply
Anyone know of something similar but for interfacing with a Drupal database?