How to migrate from Thinkific to WordPress. Part 5: Other adaptations and conclusions
In the fourth part of this 5-article series, I concluded the implementation of functions for custom import commands for users, progress, and reviews.
In the last part, I will talk about the customizations I made to the Masterclass online site and specifically go through the adaptations I made to the theme, Tutor LMS
templates, and WooCommerce
.
Below is the list of articles in the series:"
Table of contents
- Part 1: Planning and data preparations
- Part 2: Users import
- Part 3: Progress import
- Part 4: Reviews import
- Part 5: Other adaptations and conclusions
The Tutor LMS
dashboard
The Tutor LMS
user dashboard on the Masterclass online site looked something like this:"
It would have been a bit complicated to merge the two control panels, the one from WooCommerce
and the one shown in the picture from Tutor LMS
, into a single one, so I just linked them together.
If the user needs information about orders, they can find it in the WooCommerce
panel; if they need information about the courses they have enrolled in, they can find it in the Tutor LMS
panel, both accessible through direct links.
To add the "Order Dashboard" link (marked with green), I overwrote the /dashboard.php
template of Tutor LMS
: I copied the contents of the /wp-content/plugins/tutor/templates
directory to the /wp-content/themes/child-theme/tutor
directory and added the following item to the navigation links list (inside the <ul class="tutor-dashboard-permalinks">
element):
Now, to remove the links marked with red in the image above, because such functionalities are not needed, I added the following filter to the functions.php
file in the theme:
The WooCommerce
dashboard
To add the link to the Tutor LMS
dashboard in the navigation menu of WooCommerce
, for overriding, I copied the template /wp-content/plugins/woocommerce/templates/myaccount/navigation.php
to the directory /wp-content/themes/child-theme/woocommerce/myaccount/navigation.php
and added the following element as the first item in the <ul>
list:
The Tutor LMS
authentication form
During the migration and dealing with user accounts, I didn't want to make it intrusive and, especially, to violate the General Data Protection Regulation.
So, I approached this differently by notifying users through a message in the login form that the site has moved to another platform. If they had an account before, they could request a password reset link to log in.
To add this message, I used hooks in the functions.php
file of the theme:
Other filters for WooCommerce
Tutor LMS
being integrated with the WooCommerce
e-commerce engine, each course in Tutor LMS
has a corresponding product linked in WooCommerce
.
Unfortunately, Tutor LMS
does not automatically hide WooCommerce
products specifically created for courses.
Consequently, these products could be added to the cart during a purchase, both as products and courses.
To avoid such situations, I use the filter below, which hides products from areas like the shop page and related products.
But that's not enough.
Products would still be accessible at a direct address, for example: https://mclass.test/product/product-name
.
Applying the filter below disables access to product pages:
A final filter that I used is for removing the "quantity" field from the shopping cart page to prevent increasing the quantity. It wouldn't make sense for a user to purchase a quantity greater than 1 for a course.
Also, to remove the quantity field from the cart, I copied the template /wp-content/plugins/woocommerce/templates/cart/cart.php
to /wp-content/themes/child-theme/woocommerce/cart/cart.php
to override it, and then removed the following lines from it:
Migration to production
After all the changes were made, migrations executed, courses arranged, and the store prepared with all the integrations, I move the site from the local environment to the production
environment using the All in One WP Migration
plugin.
Throughout the development process of the new site, after each major step (creating courses and building their pages with Elementor
, installing and configuring WooCommerce
, running migrations, etc.), I made a backup with All in One WP Migration
.
If I had identified any data discrepancies or a malfunctioning part of the site while working on the next step, I would have reverted to the previous state of the site.
In essence, I would have performed a roll-back
, and this way, I could avoid losing too much progress.
When I had a backup very close to a version ready for production, I placed it on the production subdomain, and that's how I had a smooth development-launch process.
Conclusions
WordPress once again provides a solution to a problem I encountered.
The related technologies developed around it are truly a breath of fresh air, and if you enjoy this environment, it's worth investing time and energy.
Certainly, impressive results can be achieved using WordPress
, even for enterprise projects—no need to say that, Automattic proves it every day.
WP-CLI is a very powerful and flexible tool that can be helpful in many situations like these migrations. I recommend it every time I have the chance; I've used it in dozens of projects, and each time, I've successfully accomplished everything I needed with it.
If you need such a migration, click below, and let's discuss._
Contact meShare on: