6 ms·
Corcel – Use WordPress backend with Laravel or any PHP application
- moritzwarhier 2y agoCurious 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 2y agoIn Spanish at least, Corcel means Steed. A horse. Like the beautiful one from Shrek 2.
- 29athrowaway 2y agoNot to be confused with Porcel, a group of pigs.
- Onavo 2y agoLike Vercel but cooler :)
- hu3 2y agoIf 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.
- benatkin 2y agoIt 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.
- 3D30497420 2y agoAgreed. 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.
- samuell 2y agoJust wanting to chime in that ProcessWire [1] has provided this dependency for me over the last 10 years, even in a better way than WordPress can provide, since it is such a small core that rarely needs updating, and that most if not all functionality can be developed through a few lines it's amazing PHP API rather than tons of 3rd party plugins that need constant updating. 10+ year site still running without me touching it. One customer even was able to find a (non-expert) developer to develop it further, since it is all pure PHP anyways. As a former Drupal webdev, ProcessWire is heaven. https://processwire.com/ https://processwire.com/
- chiefalchemist 2y ago> Wordpress offers one of the most important things to these small businesses: (relative) consistency and dependability. Kudos. Maintainability. It matters. I wish more devs realized that their DIY solutions are a disservice to the client once they leave the project. WP has it (many) faults. But in general a good new dev can - with some effort - pick up where the ex-dev left off. Clients should not loose sleep tracking down support for some esoteric megalomaniac-developer solution.
- cess11 2y agoLooks 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.
- benatkin 2y agoBetter than using Gatsby, which adds complexity both on the node point javascript and WordPress end of things: https://www.gatsbyjs.com/plugins/gatsby-source-wordpress/ https://www.gatsbyjs.com/plugins/gatsby-source-wordpress/ Either are better than having to deal directly with WordPress, though.
- localfirst 2y agoif 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 2y agoFrom 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 https://github.com/corcel/woocommerce
- TheCapeGreek 2y agoWould Acorn not also fall under the same utility? It's been around for a while. https://roots.io/acorn/ https://roots.io/acorn/
- jackconsidine 2y agoThis 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.
- ceejayoz 2y agoI think Bref predates Vapor. People were doing PHP with Lambda prior to that, too, with the custom runtimes. https://aws.amazon.com/blogs/apn/aws-lambda-custom-runtime-for-php-a-practical-example/ https://aws.amazon.com/blogs/apn/aws-lambda-custom-runtime-f...
- devmor 2y ago>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 2y agoAgreed 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 https://www.agiler.io
- askonomm 2y agoPHP tooling is amazing. WordPress tooling is not, since it uses archaic development practices.
- emj 2y agoI am not a PHP developer, and our php code is all third party apps. Do you have any write ups on PHP tooling? My feeling is that php tooling has a hard time handling stateless images, you often need to install plugins to php applications with a GUI with no good way to do it in a build process. Config of php applications is always an mix of php.ini and database config, often making monitoring a case of writing custom http requests and html parsing. I am not that happy with Java but there are many things it get right especially in tooling.
- woody311 2y agoI haven't used Corcel as I haven't needed to reach for Eloquent but https://github.com/roots/acorn https://github.com/roots/acorn and the ecosystem surrounding it is fantastic.
- ssnepenthe 2y agoThere is also wordpress-interop on the doctrine side: https://github.com/williarin/wordpress-interop https://github.com/williarin/wordpress-interop
- dizaime 2y agoCorcel 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 2y agoin wordpress ecosystem do not blame yourself if you end up with a bloated site :)
- chiefalchemist 2y agoSandly, Automattic / WooComm is responsible for such thing. For example, the product gallery is such all images - thumbs and main slides - load on page load. If you don't click any thumbs - and had 10 total images - 9 would have loaded for naught. But there are BE + FE ways to fix that :) Also, WooComm recently introduced HPOS that moved order meta into its own table. Smart! But there is still order data captured for every order (e.g., customer order IP, etc).that's in the meta table. Why those we're moved to the new table IDK.
- n3storm 2y agoThe real issue is that customers without knowledge are asking explicitly for wordpress instead letting us techs give the best advice.
- conradolandia 2y agoMost techs give terrible advice.
- chiefalchemist 2y agoOn the other hand, most techs are bias. That is, the tool they know is always the best solution, whether that's true to not. Yeah, perhaps there are times when WP isn't the ideal choice from a pure technology POV, but there's more to it than that. For example, most (solo) devs complete dismiss the "getting hit by a bus" test. Sorry, but no one should accept advice from anyone who dismisses that test.
- Implicated 2y agoHave been using this for years to handle the auth in a Laravel application that's tucked inside of a WooCommerce shop, works great.
- aussieguy1234 2y agoIve 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.
- aantix 2y agoInteresting.. Is there a Ruby/rails equivalent?
- robmil 2y agoI wrote one years ago, but I suspect the schema has drifted quite far out of sync: https://github.com/robmiller/ruby-wpdb https://github.com/robmiller/ruby-wpdb
- hparadiz 2y agoI've had to do this manually so many times over the years.
- crooked-v 2y agoI 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)?
- dotancohen 2y agoYes. 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.
- ianhawes 2y agoWe 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.
- paulbrats 2y agoIt sucks that you had a tough time with Strapi; I use it for many projects and have not had any issues. Do you have any example, specifically " like localization and their API," where you had issues? I also know they have open office hours on their Discord channel Mon - Fri 12:30 pm cst where you can get help and ask questions.
- chiefalchemist 2y agoCan 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.
- tcfunk 2y agoAnyone know of something similar but for interfacing with a Drupal database?
- philipwhiuk 2y agoThis 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 2y agoAgreed. Presumably people want to keep years of posts and pages plus the familiar admin interface.
- saltybytes 2y agoHow's Corcel different to using WP's own API? What are the pros / cons?
- kayodelycaon 2y agoA 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.
- ulrischa 2y agoUseless. WP has a very good REST API