Among the Texas A&M Transportation Institute’s long-term federal contracts was a library of information related to road construction work zones. The site was approximately ten years old and was running in an outdated and insecure version of Drupal. TTI’s web team had long since moved from Drupal to WordPress as their CMS of choice, and finally received funding from the federal sponsor to migrate this site. The project included a new theme and a migration from TTI’s in-house web servers to WP Engine.
The migration offered the in-house data librarian an opportunity to make some long-overdue changes to the data model. The project therefore involved several phases:
- Identify data that did not need to be migrated (including some 10,000 spam user accounts)
- Create content model in WordPress and set up custom fields corresponding to Drupal fields
- Configure Drupal exports for approximately 8,000 records
- Import users and content to WordPress, one content type at a time
- Verify imported data
- Update the content model and migrate data within WordPress (moving custom fields to taxonomies, etc.)
- Re-verify migrated data
- Match 404 requests to stored Drupal paths and redirect to new URLs
- Configure theme templates and search result views to match (or improve on) the old Drupal site
While the migration process itself was highly idiosyncratic due to the proliferation of user-submitted content and the changes between the Drupal data model and the new WordPress site, the content modeling process was nearly identical to other past projects: IIAD, TVMDL, and Berkeley (which was in development concurrently with this project).
Aside from the data migration, the most challenging part of this project was tweaking the Relevanssi Premium search plugin to gracefully handle the taxonomy-based search filters with shared taxonomies. The search forms look simple, but behind the scenes there are lots of checks ensuring that the filter dropdowns contain only the terms relevant to the post type(s) being searched.
Content Model
The Work Zone content model consists of six custom post types, with several taxonomies shared across post types. The names of organizations, states, agencies, providers, and manufacturers had all been stored as text fields in Drupal, with the typical array of data entry errors as a result. After the data was imported into WordPress custom fields, I wrote a migration plugin to move these fields into taxonomies. This allowed us to merge the duplicates and establish a consistent naming structure that will be assigned to new database entries. This move also let us tap into WordPress’s built-in archive views for taxonomies, making it easy to list, for example, all outreach programs available in a state.
People | Training Courses | Publications | Outreach Programs | Best Practices | Equipment |
---|---|---|---|---|---|
Organization Topics State/Agency |
Organization Topics Format Provider State/Agency |
Topics Provider |
Topics Provider State/Agency |
Organization Topics Provider State/Agency |
Topics Manufacturer |
Each post type has its own sorting mechanism, search form, and search result table columns on the front end as well as a highly customized editing interface for the site editors.