After several years, our website design was no longer in sync with what we wanted from our brand. It was also built at a time when responsive websites were just becoming mainstream and we never took the time to make sure it looks good on smaller devices.
While we wanted to do a redesign for over a year and knew it was needed, launching a new plugin and several brand new addons took precedence until now.
So what a better time to write about what powers our site.
Hosting & Deployment
Currently the site is hosted on a $20 VM from Digital Ocean. It runs nginx and for our needs works like a treat. We haven’t had to touch it for the past couple of years.
We have git setup so we can work locally and just do a “git push live master” command to push changes to the live server. Nothing fancy and it worked for us quite well in the past years.
We’re also using WP Migrate DB Pro simply because it’s great. Did I say you should be using WP Migrate DB Pro if you’re not?
This is the third theme that’s installed on the website. The current iteration is based on Underscores, the started theme that is used to create all default Themes for WordPress.
We have a few custom templates for our landing pages with the content directly in the template, as opposed to the_content(). This means we can keep it under version control and it’s a lot easier for us to iterate changes, particularly when we want to control the exact look and feel of each page.
When we started the redesign we considered having the html and content directly in the WordPress editor, however we drooped that early on. It’s just no substitute for a proper editor when working with more complex HTML layouts.
There are 43 active plugins on our site. Quite a lot, however a large number of those are small addons, many of them coded by us over the years. The superb backwards compatibility of WordPress means we have code written years ago that works just fine.
- Easy Digital Downloads – we’ve been using EDD ever since it was launched and it’s the main plugin on the site. Prior to it we had a custom plugin that didn’t quite work.
- Avangate – our payment gateway. It’s integrated with a custom EDD addon. We’re using this particular gateways simply because they simplify our accounting significantly. Their API is not the best to work with and there are a few limitations (we can’t create discount codes from EDD via the Avangate API since there’s no support in the API for it)
- Custom Serials – This is a in-house plugin that was developed before EDD Licensing was released. So we’ve kept it. We’re doing things a bit differently then EDD Licensing does, meaning our updates and serial checks are served from a subdomain and not from the main site. This means we can have a very lightweight PHP app that is a lot faster then just loading the entire WordPress to check for a serial. There are a lot of sites that have the cron jobs broken and ping for serial checks on every page load. That would have simply brought down our site with fake traffic.
There’s also the funny story when we DDOS our own site with serial checks, but I’ll leave that for another time.
- Easy Digital Downloads & MailChimp – Integration on the checkout page with MailChimp.
- Easy Digital Downloads User History – We’re using this so we can see what path our clients follow when they purchase. It’s very useful when trying to optimize our marketing funnel
- Custom Renewal Emails – Since we’re not using EDD Licensing, we’ve written our own renewal emails that tie into the Custom Serials plugin.
- Custom Products Add-Ons – Creates a simple CPT as well as opening an API for us to be able to list and install all addons directly in our plugin’s UI.
- HelpScout – is our main support channel. It works wonders for us and since we’ve switched to it from bbPress forums, we haven’t looked back
- HelpScout integration for Easy Digital Downloads – very useful when answering to support tickets in HelpScout. It searches for the user’s email in the EDD records and lists any purchases made by the client
- SearchWP – used search our documentation based on the plugin. It works really well and gave us the control we wanted over our documentation search.
- Gravity Forms – for creating new tickets.
- WordPress Creation Kit Pro – Our own plugin is used to create the documentation CPT as well for adding a custom fields on various parts of the site.
- Profile Builder Pro – For login and edit profile functionality from the front-end.
- User Switching – Very useful when we want to browse the site as a client.
- Table of Contents Plus – to automatically display a TOC at the beginning of each documentation page.
- Widget Logic – Used on documentation widgets so we’re displaying the proper menu when browsing each individual plugin docs
- WordPress Download Monitor – This is a really old plugin and it’s different than the one currently found on wordpress.org. It works great so we never seen the reason to change it just for the sake of it, even though it’s no longer supported. We use it to store mini-addons and plugins and share them with our users.
- Yoast SEO – besides helping with the SEO we’re also using it for sitemaps and breadcrumbs
- Page Links To – a simple little plugin that redirects old pages and posts
- WP-CodeBox – if this doesn’t say backwards compatibility then I don’t know what does. This plugin hasn’t been updated in the past 6 years and works a treat. I would recommend using something else if you’re starting a new site, but it works for us
- Jetpack by WordPress.com
- Advanced Excerpt
- Captcha by BestWebSoft
- Delete Expired Transients
- FFF Cron Manager
- Nav Menu Roles
- bbPress for our now retired forums
- Primary: sell digital downloads of our plugins. The redesign should make it easier for our clients to learn about our plugins and how they can solve their problems
- Secondary: a portal for all the things related to our products: documentation, support, plugin demos, tutorials. We should provide a consistent and logical navigation throughout the website
- Tertiary: make it easier for our team to create and modify content (blog posts, announcements, tutorials, bundles, etc). While the blog is no longer the star in this redesign, it’s importance is not forgotten and it’s still part of the core of what we do at cozmoslabs.com: provide solutions and value for all our users and readers
Marketing & SEO
Misc & Other Plugins
That’s it. I’m sure I forgot a few plugins along the way, but the main ones are listed above.
The new CozmosLabs website is live
Back when we launched www.cozmoslabs.com, it was a simple blog where we wanted to share with the world what we learned while doing WordPress development. And it worked perfectly.
This is the 3’rd iteration of the www.cozmoslabs.com website and up until half a year ago, the blog was still the first page of the website. While this worked well in the past, it’s not working now.
With three main plugins and a few smaller ones on the side, over 20 addons, documentation and support pages, we needed to rethink the way our website was organized.
Defining goals for the redesign
Having goals defined help speed up development as they provide limits as to what you should and shouldn’t do. With our redesign we started of with three main goals:
I personally think we managed to achieve those goals and love or hate it, the new redesign is here to stay. I would love to hear what you think of it in the comments!
Subscribe to get early access
to new plugins, discounts and brief updates about what's new with Cozmoslabs!
7 thoughts on “How It’s Made – A look at the theme and plugins that power cozmoslabs.com”
Thank you for sharing your plugins lists 😉 Question though, have you checked out Widget Options : https://wordpress.org/plugins/widget-options/ , instead of Widget Logic? Thanks!
I know there are alternatives to Widget Logic, but I just love the simplicity of the plugin. Basically we have something like: has_term( ‘profile-builder-2’, ‘category’ ) on our docs pages and that’s it. For a non developer I would totally recommend something else, but for us it just works.
Using a DigitalOcean VM but not using memcached? I highly recommend adding it, with this drop-in for WordPress:
With an object cache like memcached, you won’t need Delete Expired Transients because transients are stored in the object cache instead of wp_options. Not to mention, it’s faster 🙂
Great and important post. How do you create the landing pages and manage them?
The landing pages are static. Normal HTML templates found inside the theme. https://developer.wordpress.org/themes/template-files-section/page-template-files/page-templates/
We’re doing it like this simply because we wanted to use an IDE for development since there is a lot more HTML and CSS involved. I did consider the WordPress post editor as the place to enter the HTML, however it was just to awkward and it slowed development.
Does Profile Builder need Buddypress to be installed or I could use it without BP?
Profile Builder is a stand alone plugin. As a matter of fact, the two are not really compatible due to the differences between them.
If you have a more detailed question, you can always ask us by opening a new ticket: https://www.cozmoslabs.com/support/open-ticket/