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
Below is the list of articles in the series:"
Table of contents
Tutor LMS dashboard
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:
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
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
Tutor LMS being integrated with the
WooCommerce e-commerce engine, each course in
Tutor LMS has a corresponding product linked in
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:
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/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.
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 me