How to downgrade WP Job Manager to 1.31.3 (or other versions)
As some of you may have noticed, today WP Job Manager 1.32.0 was released, which includes a major change and switch from using the Chosen.JS library, to the Select2 library (for the multiselect dropdown fields). This change has caused a major issue in relation to a lot of the field editor code base, which specifically targets the Chosen.JS library for handling things like Conditional Logic, Dynamic Taxonomies, and even custom Multiselect fields. Below I will explain very easily how you can downgrade back to version 1.31.3, until I can release the update to the field editor plugin that supports the change to Select2, as well as details regarding why WP Job Manager is switching to Select2, and why it’s taking a while for a Field Editor update to support this…
While this blog post specifically related to WP Job Manager Field Editor, chances are the update for 1.32.0 will also break and cause issues with themes and other addon plugins that rely on Chosen.JS, so PLEASE be careful before upgrading to this version even after an update for Field Editor has been released, and make sure to thoroughly TEST your site to make sure it does not break other parts of your site (separate from my plugins).
The tutorial below for downgrading to WP Job Manager 1.31.3 is not specific to any plugin or theme. If your theme developer or plugin developer has sent you to this page, you can disregard the references to the Field Editor plugin.
Backup Backup Backup
First and foremost, before you upgrade or downgrade ANYTHING on your site, you should ALWAYS create a backup! Which you did before you upgraded WP Job Manager to version 1.32.0, right? right? If you did not, it’s not too late!! You should ALWAYS get in the habit of creating backups before upgrading core WordPress, Themes, or any plugins! The day that you upgrade and have issues and realize the backup just saved you days of work, you will thank me!
There are numerous free and paid WordPress backup plugins, which you can find the free (or freemium) ones on the WordPress plugin repository (or through searching from your WordPress installation).
My favorite is Backup Buddy, but that is also a paid plugin, and it is WELL WORTH THE COST!
Existing clients can temporarily get a free promotional copy of BackupBuddy, here: https://plugins.smyl.es/backupbuddy-field-editor-promotion/ (you must be an existing client and logged into your account)
If you like the BackupBuddy plugin, I strongly recommend purchasing a license for it, as this supports the developers and further development of the plugin. Some hosting companies may have issues with the plugin, if you have issues, I recommend trying different settings from the Advanced tab in settings, or contacting your hosting provider and asking them what to set to get BackupBuddy to work with them. If they do not help, ask them what you should use for backups, as they should give you some kind of legitimate answer as to how to backup your WordPress site, and if not … you may need to think about choosing another provider. 95% of the time most BackupBuddy works out of the box without changing any settings.
Another free option that I like and works well, is the Duplicator plugin
Now that you have a full backup of your site, let’s proceed to downgrading WP Job Manager to version 1.31.3
This is not absolutely necessary, as we’re just downgrading to an older version of WP Job Manager, and there should be no issues, but I want you guys to get in the habit of creating backups so it becomes a routine when upgrading your site, plugins, or themes!
WP Rollback (easy)
The easiest way to rollback to version 1.31.3 on your site is using the WP Rollback plugin by installing it directly from your WordPress installation.
Goto your WordPress admin area, and under Plugins click “Add New”, and then search for rollback as you can see in the screenshot on the left.
Once you see the WP Rollback plugin, install and activate it on your site. This will allow you to rollback any plugins you have installed, to different versions available from the WordPress repository.
After you have installed and activated the plugin, goto the Plugins page (which lists all installed/activated plugins, and you will now see a new link menu item that says Rollback as you can see in the screenshot on the right.
Click on the Rollback link and it will bring you to another page to select the version to rollback to.
On this next screen you will want to select the latest version prior to 1.32.0
which would be 1.31.3
Select that version, and then click on the Rollback button. It will prompt you to test on a staging site, and create a backup … which you should already have a backup of your site, and if you DO NOT, you should make a backup NOW before doing anything else (read above)!
After you click Rollback this will install the 1.31.3 version of WP Job Manager, and will show you a page to Activate the plugin.
That’s it! You’ve now downgraded to version 1.31.3 of WP Job Manager! If you want more details about why it is taking so long to update the field editor to support this new version, please see the bottom of this page.
WordPress Plugin Repository (advanced)
Another way to downgrade to version 1.31.3 is to download the ZIP of that version of the plugin, directly from the WordPress plugin repository:
https://wordpress.org/plugins/wp-job-manager/advanced/
Browse to the link above, and towards the bottom of the page you should see something that looks like the screenshot to the left.
Select version 1.31.3 from the dropdown, and click Download
This will download the ZIP file for WP Job Manager version 1.31.3.
Next we will need to check the settings in WP Job Manager to make sure you DO NOT have the setting enabled to delete data on uninstall.
From your WordPress admin area, goto the Settings sub-menu item from the Job Listings main menu item. Under the General tab, you should see a setting exactly like the one in the screenshot on the right.
Make sure this is NOT CHECKED, if it is, uncheck it and click Save. Failure to uncheck this setting will result in data being removed in the next step!
Now that you’ve made sure data will not be removed on uninstall, goto your WordPress admin area, click on Plugins and scroll down to the WP Job Manager plugin.
Click on Deactivate to deactivate the plugin on your site.
The page should reload.
Scroll back down to the WP Job Manager plugin, and you should now see Delete.
Click Delete to remove the newer version of WP Job Manager from your site.
After you have deleted the WP Job Manager plugin from your site, go back to the Plugins page.
In the top left corner of the page you should see the Add New button. Click on it.
This will bring you to another page, where in that same area the Add New button was.
You should now see one that says Upload Plugin, click on that button.
A new area should now appear similar to the screenshot on the left, you will want to click on Choose File and select that ZIP file you downloaded from above.
Click on Install Now and this will install that version of WP Job Manager that you downloaded.
These instructions above are standard for installing any kind of WordPress plugin
Why doesn’t Field Editor support 1.32.0+ yet? 1.8.9+ Does!
A few clients have asked my why Field Editor isn’t wasn’t ready for WP Job Manager 1.32.0+, and i’ll go into this a bit below to explain the issues, updates, and what is going on.
WP Job Manager Field Editor 1.8.9+ supports WP Job Manager 1.32.0+
Why Chosen.JS or Select2 Libraries?
So to explain a bit if you’re not aware, or do not know what Chosen.JS or Select2 is … they are both open source libraries for creating the dropdown boxes everyone is familiar with and are used for the Multiselect field types (both Taxonomy and non-taxonomy).
The screenshot to the left should probably be familiar to you. This is an example of the Job Category field using Chosen.JS on a single select taxonomy dropdown.
Another common use for the library is for multiselect fields, which you can see an example of this, on the right.
The example on the right is for the Job Tags field which was changed to a multiselect using my Field Editor plugin. Looks nice, right? Unfortunately this isn’t something that is just “native” to your web browser, and without Chosen.JS or Select2, it would actually look like this:
I’m sure we can all agree that the default multiselect, is just ugly, and not user intuitive (meaning it’s hard for basic users to know how to even use it). That is why the core WP Job Manager plugin, up until today, has been using the Chosen.JS library … to make multiselect boxes look much nicer, and easier to use.
Why switch from Chosen.JS to Select2?
While the Chosen.JS library is very nice and easy to use, and has been around for a while … it also lacks in numerous areas where features are needed, isn’t updated as frequently as Select2, and Select2 is the framework used by popular plugins like WooCommerce and others.
Some issues include things like the required attribute ( https://github.com/harvesthq/chosen/issues/515 ) which you can see at the bottom I actually provided a solution, but since the issue was opened in 2012, nothing had been done about it.
There’s also the controversial issue surrounding mobile support ( https://github.com/harvesthq/chosen/pull/1388 ), as Chosen.JS does not support mobile devices, and relies on the user’s device for handling it.
There have been numerous issues opened on the WP Job Manager github repository regarding this:
https://github.com/Automattic/WP-Job-Manager/issues/1202
And essentially the WP Job Manager team decided to switch to using Select2 instead of Chosen.JS ( https://github.com/Automattic/WP-Job-Manager/pull/1645 ), which adds numerous new features that allow for added functionality in the WP Job Manager plugin (like searching for users when editing from admin area).
How does this affect WP Job Manager Field Editor?
This actually has a HUGE impact on the field editor plugin, as each library (Chosen.JS and Select2), has completely different ways of handling configurations, events, and triggers that happen when a value is changed, updated, selected, etc.
If you’re using my field editor plugin, chances are you have created a custom multiselect field, and maybe using a feature like setting the max number of selected options. The field editor plugin has specific code in it to initialize those multiselect fields, setting the max selected configuration, but this is done completely different in Chosen.JS than it is in Select2.
The issue above is actually something very easy to fix, the major issue here is related to the Conditional Logic, and Dynamic Taxonomy features that were recently added. Just the conditional logic javascript has over has almost 1,800 lines of code, with most of that specifically targeting the way that Chosen.JS initializes the fields, waiting for them to be initialized, as well as handling when a value is added, removed, or changed. That doesn’t include the 1,300 lines of PHP code, half of which is specific to Chosen.JS as well.
A couple of the specific details are that Chosen.JS triggers an event on change, passing selected and deselected values, whereas Select2 does not. PHP code was implemented to pass data of what fields are Chosen.JS and handles modification of the field and configurations, to make sure they are initialized correctly using that specific meta key’s configuration.
This means that the majority of this codebase for conditional logic has to be rewritten, and thoroughly tested to make sure it’s compatible with Select2 (basically meaning I have to start over again, and redesign the flow of how conditional logic is handled).
The other major issue as mentioned above, is the recently released dynamic taxonomy feature. This was also entirely based on Chosen.JS, and is around 1,000 lines of JavaScript code that also has to be rewritten/refactored, and tested to make sure it’s compatible with Select2.
These are just some of the features directly effected in WP Job Manager Field Editor by the switch to Select2. That doesn’t include the numerous lines of PHP and JavaScript code added over the years to make new fields compatible, have added features, and more.
I have been actively working on, and testing updated codebase for Select2 support over the past month+, and hope to have something to release very soon.
With that said, I also want to point out that this requires a very extensive amount of testing, and debugging, due to the infinite possibilities/configurations/implementations there are in the conditional logic, and dynamic taxonomy child dropdown features.
As most of you may already know, I take pride in all the code that I write, and would never release something that has known issues (::cough: microsoft ::cough::), as I do care about my clients and their sites, and want to make sure that once they upgrade, they don’t have to worry about it breaking something. This is why I posted this tutorial of how to downgrade, so you can still have a full functioning site until I can be 99.999% sure that the update for field editor, will not break or cause issues for you.
I also have to spend the time writing compatibility code for those users who will be using an older version of WP Job Manager (older than 1.32.0), which essentially means my plugin will have to support BOTH Select2 and Chosen.JS, until the next major release version (2.x.x) where Chosen.JS support will be removed.
I will be releasing I have released an update for the Field Editor plugin here in the next couple days, version 1.8.9, which will be the last release of the Field Editor 1.8.x versions, as this release will fix a couple minor bugs and issues for those who want to remain on an older version of WP Job Manager, or do not want to use Select2.
Thank you for your understanding and patience while I am working on this, as this is not an easy task to add support for, and will require numerous long days and nights to finish up everything.
No comments yet.