0 minute read
A development perspective
Magento vs Woocommerce is quite a common ecommerce dilemma that people will find themselves facing when launching an online store.
As a developer, I have spent a decent part of my time working with ecommerce sites. This includes designing the frontend, adding functionality in the backend and also just using these two platforms as an administrator.
I’ve worked with them enough to write a little about their relative strengths and weaknesses. I think you can get some value from what I have to say from a practical and technical point of view whether you are a developer, or a business owner trying to make a decision on Magento vs Woocommerce.
I’ll talk about both platforms under the 3 subheadings of, getting started, development and management. Of course I’ll offer up an arbitrary rating out of 10.
Getting Started
Woocommerce
I’ll start with Woo here for a good reason. From a difficulty perspective, it is so much easier getting started with Woocommerce.
WordPress is a platform familiar to millions. At the time of writing, some 455 million plus websites are thought to run on the platform. To get a Woocommerce store up and running it is as simple as –
- Buying some hosting
- Installing WordPress (most good hosting will have 1 click install for this)
- Adding the WooCommerce plugin
I have used Bluehost for Woocommerce stores twenty20vintage.com and ttyarncraft.co.uk and can vouch for how easy it is to get going on there. Use the above affiliate link to get yourself a great deal on hosting and myself a few pennies in return.
Really after adding the woocommerce plugin you can either create a theme, use a free theme like storefront, or purchase one from themeforest and install it. Then you are straight into the business of adding products, and the configurations that will get you selling.
On a scale of 1 to 10 with 1 being hard and 10 being easy, for me its a definite 10 in terms of installation/getting started with woo.
Rating: 10/10
Magento
There is a lot more to say about Magento installation. When I came into Magento 2 development, I wasn’t much of a command line guy. If there was an installer or a GUI tool of some sort available, I’d use it every time over the command line.
You simply can’t avoid the command line if you are going to install Magento 2 community edition, the open source free version of the Adobe ecommerce software. In fact at the time of writing the product name seems to be going through some sort of P-Diddy/The artist formerly known as Prince existential crisis and is now referred to as Adobe Commerce powered by Magento.
For the avoidance of any confusion, I shall simply still be calling it Magento.
Some bemused developers on twitter have also communicated their dissatisfaction at Adobe burying the free version of Magento on their site a little too. If you are looking for it, you can find the installation guide here
In terms of getting started, of course price comes into that. As previously mentioned, you can get your hands on Magento for free and this version out of the box will allow you to get selling online with a pretty comprehensive set of features and the pagebuilder feature is also available now as standard in the free version. Allowing non-developers to add content with relative ease.
Of course to get to that stage you need to have it installed, so jumping back a step, you will need to first of all be comfortable with SSH and sshing into a your server.
I can give you a link to a useful YouTube video that is a little out of date in terms of versioning now but still covers most of the top level tasks that you need to perform to install Magento and all required dependencies on a server.
Magento Installation
For a non-developer, I can almost certainly say just don’t attempt this installation on your own. Even for a developer there are aspects of this installation that can be testing. So although the pricing of the software is free, you are going to have to pay for developer help to get going with Magento, psst, contact me for help with this.
Even when you have the installation process whirring along nicely you’ll find Composer telling you that you shouldn’t be using version 1 to run the install but if you switch to version 2 it won’t be compatible with some plugins. It’s just a bit of a mess. The last time I installed I found that you can use composer 1 just fine. It will just scream at you for doing so.
An alternative is to use some managed hosting that can do a lot of the heavy lifting for you. Krystal are a fantastic hosting company that I’ve been using for clients sites, and this very site infact. They are an ethical, sustainable business and they have managed Magento 2 packages. The support is great too from my experience. Highly recommended.
In the installation battle of Woocommerce vs Magento, it has to be said that Magento is slower out of the blocks due to it’s tricky nature.
Rating: 5/10
Development
This for me is the most interesting part when you think about Magento vs Woocommerce. I have spent a couple of years now working regularly with Magento 2. Coming into it as a newbie and learning it from the ground up.
Woocommerce is something I’m working with more now.
There are pretty stark differences in the two ecommerce platforms when it comes to developing themes and adding functionality.
Woocommerce
If we first think about the look and feel side of development. In Woocommerce you can download a theme such as Storefront, and create a child theme based on it to house your extensions and customisations.
This will be a familiar practice for many. The reason for using a child theme is it maintains a sound development principle of not overwriting core theme functionality that may be overwritten in future updates.
You get the benefit of all the functionalities of a well supported theme. On top of that you can then create a completely unique look by adding customisations in a child theme. You can combine the child theme with the advanced custom fields plugin to add functionality to a product page very easily.
It’s worth adding that the above approach followed the kind of principles I’d learned working with Magento. It’s fine, it works as intended and abides by the child theming principles.
Woocommerce is all about the hooks and filters though. I could have easily acheived the above customisation on my product page by hooking into the correct function and adding code to output the html in my childtheme functions.php file.
Hooks and filters are a more typical way to add customisations and functionalities to a child theme. I have say that after a short period of adjusting to this approach. I do like it. It is concise and gets the job done.
Plugin Baby
If you were looking to develop something with a bit more depth, something that hooks into an external api, or some fancy hero section with multiple config options. You can then look at developing your own plugin to handle that. It gives you the opportunity to develop a standalone piece of functionality that you can use on any Woocommerce site you may be developing.
Plugin development is a lot like creating a custom module in Magento due it’s encapsulated nature. This approach feels more familiar to me because of my Magento background and it’s something that I’m enjoying experiencing at the time of writing.
The plugin eco-system of Woocommerce/Wordpress is of course gigantic. You will often find a plugin, on many occasions for free, to perform whatever functionality you are looking for. Most plugins are super easy to install too, really just a few clicks. Configuration can be a pain depending on the complexity of the plugin. Anything worth it’s salt will be well documented though.
The huge amount of plugins available of course saves you development time, and time is money 💰.
Just ensure the plugins you use aren’t abandoned and keep them up to date.
Keep your site a no hacker zone.
Woocommerce is fully customisable and gives you lots of control over everything. The development experience takes a short amount of time to get used to but if you are familiar with WordPress, Woo will likely be second nature to you.
With that said, as you will read below I just think Magento feels a little cleaner when you are developing for it.
So in the arbitrary out of 10 score with 1 being rubbish and 10 being fantastic. I give Woocommerce a very solid 8/10 for the development experience.
Rating 8/10
Magento
Magento is more complex than Woocommerce when it comes to the structure of the application. Therefore it can be intimidating to get going with development and customisation.
Magento page layouts are handled by XML layout files.
Let’s take a closer look at one of these.
So here we have a file contained within a module created for adding amazon pay functionality to various pages in the website. There are many folders and files but you will generally find the layout files in view\frontend\layout.
The naming of the file is significant here, catalog_product_view.xml is referencing a core layout file, but by using it in a custom module it can be extended.
By using the referenceContainer tag you can do something similar to hooks in WordPress. This is selecting a specific location (name=”product.info.social”) in the code to inject the additional functionality.
The block tag has a few interesting properties. Firstly, class this is the path to the class that contains the logic, a unique name, before property which when given the value “-” it means this block should be positioned before all other elements that are found at the same level within the referenced container.
Last but far from least, template defines the path to the template to be rendered on the front end. In Magento these are phtml files.
If that makes sense, excellent. If not, don’t worry I told you it can be a little confusing to get to grips with as a beginner developer.
Once you have created a few simple custom modules things start to become clearer.
It can seem like a lot of code, but there are tools out there that can help. mage2gen.com can help with a lot of the code scaffolding.
I learned to love the way that custom modules are organised. The modular approach is of course better for maintainability and makes it quicker and easier to track down those bugs that will inevitably occur.
Magento Bliss
There is an extension marketplace available for Magento. It won’t be a surprise to hear that it doesn’t really touch the WordPress plugin eco system when it comes to numbers.
The big hitters such as payment providers and marketing companies have Magento extensions though as you would expect plus much more.
The installation of Magento extensions isn’t as simple as the one click process that is found in Woocommerce. You will find yourself back in the terminal to update the application.
With all that said though, in general Magento wins out for me in the Magento vs Woocommerce development side of things.
The bar to entry is a bit higher, but when you get used to the module system it really is bliss to work with.
Oh apart from Knockout.js, that can get in the bin.
Rating 9/10
Magento Vs Woocommerce: In Conclusion
Magento vs Woocommerce is kind of a misleading matchup.
Don’t worry, I haven’t made you read all those words under false pretences. It’s just that both these fantastic platforms have their own space in the ecommerce world.
I feel that Woo is far more suited to smaller business. Independent shops or smaller brands who want to get online are perfect for a Woocommerce store. Woo will provide most of the required features out of the box, and a plugin will take care of any other requirement that isn’t catered for.
Magento is for enterprise level business and the big players in retail/commerce. It is going to cost a fair bit to get going, however it is more feature rich in comparsion to Woo. Magento is also thought to be much more scalable.
With that in mind, your choice of platform is really going to be driven by the size of the business you are developing for.
Both platforms are great to develop with and give you full control over the application. I genuinely enjoy working with both platforms.
Agree? Disagree? Leave a comment.
Take care
Chris ✌