A Study of our path using WordPress
Dawson College with 10,000+ students and 1,000+ faculty and staff has adopted WordPress as our primary web publishing platform. We’ve mostly had success, but we’ve also had our share of failures and growing pains. In this case study, I’m going to talk about how we started out with WordPress in 2010, migrated our main website a few years later to a multi-site install and how it all evolved to what we have today. Since then, we’ve adopted the “lean and mean” mantra to building sites, while making them easy to update. This case study will showcase the front and back-ends of our higher profile sites to show how we achieved our goals. We’ll also explain how we manage expectations, do our development, choose plugins and tools, and which themes we’ve come to rely on.
Tata AIG General Insurance Company - Insurer Innovation Award 2024
The Dawson Way of Doing Things
1. The Way
of Doing Things
A STUDY OF OUR PATH USING WORDPRESS
WORDCAMP MONTREAL 2016
DAWSON COLLEGE
@MYDAWSONCOLLEGE
WWW.DAWSONCOLLEGE.QC.CA
JONATHAN PERLMAN
@JPURPLEMAN
WWW.JPURPLEMAN.CA
2. Jonathan Perlman
• 14 years web developing at Dawson College
• 9 years teaching for Dawson's CTD
• 6 years using WordPress
• 3 WordCamp talks
• Member of WPCampus
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
3. Dawson College at a glance
• 20,000 applications
• 10,000 students
• 1000+ faculty & staff
• 26 programs of 2 or 3 years
• 4 sectors
• Social Science & Business Technologies
• Creative and Applied Arts
• Science, Medical Studies and Engineering
• Continuing Education
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
5. The early years
• Academic administration was
responsible for web content
• Web was hosted at Dawson College
• No CMS for main site
• We used Dreamweaver templates
• Users were using SFTP access
• 2,500+ pages on 2 web servers
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
6. Joomla!
• Academic departments were all
designed to be unique
• No consistent branding
• Some departments embraced it
• Added content as they saw fit
• Others left content to rot
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
7. Joomla!
• 65 separate installs
• No consistent version numbers
• No core and plugins updates
• Server security wasn't enforced
• Users had bad passwords
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
9. What we learned
• Infected weeks prior
• Previous backups were useless
• Needed scanners to find unwanted files
• Sites were exploited for bragging rights
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
11. Changes with new direction
• Communications was made responsible for
web content
• Institutional content and departmental
content was merged into one site
• A unified 3rd party content management
system was purchased
• Main website was moved off-site
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
12. The need to switch
• Editing content as wasn't easy
• Wanted every department to update the web
• French characters were hard to display
• Technical support was slow to respond
• Service wasn't reliable
• Support for CMS was dropped
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
14. Overall process
• Pull content from 3rd party CMS into a WordPress
site
• Audit and categorize content
• Identify pages to migrate
• Pull content into development WordPress site
• Release with same design
• Reformat in WordPress
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
15. Pull content into temporary site
• List of all pages
• Pulled content by web address
• PHP + Curl + Simple Dom
• http://simplehtmldom.sourceforge.net
• Created posts with wp_insert_post()
• Set meta value with ID of old page
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
17. Looking back
• Content Audit Plugin by Stephanie Leary
• https://wordpress.org/plugins/content-audit
• Community didn't realize we were on a brand
new platform
• Redirect, redirect, redirect – 1900+
• Edit two sites in parallel
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
19. Redesign project
• Looked at various higher education sites
• Redesigned from scratch
• Re-envisioned the navigation and site structure
• Used customizer for header images
• Hired for content and training support
• Helped departments rework their content
• Ported content for all the others
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
21. Web sites
• www.dawsoncollege.qc.ca
• Center for Training and Development
• Computer Science
• Human Resources
• Nursing
• Registrar's Office
• Student Fees
• athletics.dawsoncollege.qc.ca
• library.dawsoncollege.qc.ca
• peacewall.dawsoncollege.qc.ca
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
135+
25+
22. Page views as per Google Analytics
300,000
400,000
500,000
600,000
700,000
800,000
Jun-15 Jul-15 Aug-15 Sep-15 Oct-15 Nov-15 Dec-15 Jan-16 Feb-16 Mar-16 Apr-16 May-16 Jun-16
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
23. Web staff
• Web governance is centralized to IT and
Communications
• Full time
• 1 IT
• Part time
• 1 in IT
• 1 in Communications
• Occasional
• 175+ editors spanning all departments
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
25. Web server environment
• Virtualized web servers
• 16G of ram
• 4 cores
• Nginx & PHP-FPM
• Security rules block common attacks
• Direct access to files within WordPress core
• xmlrpc.php
• /wp-admin/ & wp-login.php restricted to Dawson College network
• SQL Injection
• Unwanted user-agents
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
26. Database server environment
• Virtualized database servers
• 16G of ram
• 4 cores
• MariaDB
• Every WordPress install has a unique
username and password in wp-config.php
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
27. Backups
• Daily file snapshots
• MySQL Auto Backup
• https://sourceforge.net/projects/automysqlbackup/
• Daily
• Weekly
• Monthly
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
29. WordPress updates
• Auto-update disabled
• Everything is version controlled
• We never push out X.X
• We always wait for X.X.1
• Reasons for waiting
• Stability
• Bug fixes for the major release
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
31. Site environments
• Every website has minimum two copies
• Every developer has their own install
• Example: www.dawsoncollege.qc.ca
• Chris, Elisabeth, Jonathan
• Staging
• Production
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
38. Committing plugins
123438b Adding plugin: WordPress Importer at version 0.6.2
449e092 Updating plugin: Print Friendly and PDF to version 3.4.6
8d2d7e3 Updating plugin: WP Migrate DB Pro Media Files to version 1.4.4
ce0181e Updating plugin: WP Migrate DB Pro to version 1.6
3a37bd6 Updating plugin: Gravity Forms + Custom Post Types to version 3.1.3
91e2560 Updating plugin: jQuery Responsive Select Menu to version 1.5.0
83af679 Updating plugin: Gravity Forms to version 1.9.19
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
git-wp-commit-object()
https://github.com/jpurpleman/WordPress-Stuff/blob/master/.bashrc
39. WP Migrate DB Pro
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
42. Plugins
• Active Directory
Integration
• Advanced Custom
Fields
• CMB2
• Google Analytics by
Monster Insights
• Gravity Forms
• Responsive Menu
• TinyMCE Advanced
• WP Migrate DB Pro
• User Switching
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
45. Multi-site
• All multi-sites run one theme each
• Each install is a cohesive site with one goal
• Easy to update core, plugins, theme
• We're not doing domain mapping
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
51. Research grant projects
• Dawson Oral History Project
• Allows students to archive audio interviews and assign
meta-data about the interview
• SALTISE
• Writing in Disciplines
• Allows faculty to communicate and share ideas
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
65. Looking forward
• Iterative improvements pushed more
frequently
• More web application development on
WordPress
• Connecting sites and sharing data with
REST API
@jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016