Dawson College in Montreal, Quebec, Canada 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.
The Dawson Way of Doing Things: A Study of Our Path Using WordPress
1. The Way
of Doing Things
A STUDY OF OUR PATH USING WORDPRESS
DAWSON COLLEGE
@MYDAWSONCOLLEGE
WWW.DAWSONCOLLEGE.QC.CA
JONATHAN PERLMAN
@JPURPLEMAN
WWW.JPURPLEMAN.CA
2. Jonathan Perlman
• Canadian, eh! Montreal, Quebec
• Senior web developer at Dawson College
• Teacher at Dawson College’s CTD ( non-credit )
• WordCamp speaker
• Member of WPCampus
@jpurpleman | jpurpleman.ca
4. Dawson College at a glance
@jpurpleman | jpurpleman.ca
15,000+ 10,000+ 1,000+
• Technical / vocational institution
• Centralized IT & Communications departments for
students, faculty and staff
15. 2013 – Long Overdue Redesign
• Editing content wasn't easy for the non-tech
• Multi-lingual support was non-existant
• Technical support was slow to respond /
not reliable
• Support for CMS was dropped
@jpurpleman | jpurpleman.ca
19. 2014 – 7 Month Migration
Import
Audit &
Identify
Import
Selection
Build a
theme
Release
Same Design
Reformat In
WP
@jpurpleman | jpurpleman.ca
20. Migrating…
• PHP + Curl + Simple Dom
• http://simplehtmldom.
sourceforge.net
• Created posts with
wp_insert_post()
• Set meta value with ID
of old page
• Categories
• Keep
• Revise
• Trash
• Wtf?!?
@jpurpleman | jpurpleman.ca
21. Looking back
• Successes:
• Multi-site
• We moved quickly
• Community didn't realize we were on a brand new platform
• Downsides:
• Redirect, redirect, redirect – 1900+
• Edit two sites in parallel
@jpurpleman | jpurpleman.ca
22. 2015 – Mobile & Responsive
@jpurpleman | jpurpleman.ca
23. Tips
• Create new ( unused ) menus in production and
replicate it in development
• Don’t revise content in development and wait to
release it
• Leads to editing dev site and production site in parallel
• Beta periods may invite too much feedback
• Keep them short!
• Produce documentation about the overhaul
• Highlight new features and explain choices
@jpurpleman | jpurpleman.ca
29. Web server environment
• Virtualized web servers
• 16G of ram
• 4 cores
• Nginx & PHP-FPM
@jpurpleman | jpurpleman.ca
30. Security Posture
• Fortinet WAF controlling the network
• Nginx rules to block common attacks
• Direct access to files within WordPress core
• xmlrpc.php
• SQL Injection
• Unwanted user-agents
• Login page restricted to Dawson College
network
@jpurpleman | jpurpleman.ca
31. 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
32. Backups
• Virtual machine backups via Veem
• MySQL Auto Backup
• https://sourceforge.net/projects/automysqlbackup/
• Daily
• Weekly
• Monthly
• Send data off-site
@jpurpleman | jpurpleman.ca
33. 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
35. Project environments
• Every project has minimum two copies
• Every developer has their own install
• Example: www.dawsoncollege.qc.ca
• Chris, Elisabeth, Jonathan
• Staging
• Production
• Push and pull database content via command
line
@jpurpleman | jpurpleman.ca
39. 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
git-wp-commit-object()
https://github.com/jpurpleman/WordPress-Stuff/blob/master/.bashrc
42. Tips
• In a multi-site setup
• Create your own parent themes
• Go with as little theme options as possible
• In a single site install
• Child theme as much as possible
@jpurpleman | jpurpleman.ca
43. Plugins
• Admin Columns
• Advanced Custom
Fields
• CMB2
• Disable Emoji's
• Gravity Forms
• Mapplic
• Next Active Directory
Integration
• Responsive Menu
• SportsPress Pro
• The Events Calendar
• TinyMCE Advanced
• User Switching
@jpurpleman | jpurpleman.ca
44. Tips
• Find plugins with reputable histories
• Use plugins that are supported and up-to-date
• Most are multi-site friendly but some are not
• Plugins like Advanced Custom Fields are heavy
on the database and hard to maintain
@jpurpleman | jpurpleman.ca
59. Admin Additions
• Editor level roles for most users
• Custom post types for content
• Ability to create forms
• Allowed the use of Customizer
@jpurpleman | jpurpleman.ca
66. Looking forward
• Iterative improvements pushed more
frequently
• More web application development on
WordPress
• Connecting sites and sharing data with
REST API
@jpurpleman | jpurpleman.ca