The document discusses Dawson College's transition to using WordPress for its websites over several versions. Jonathan Perlman, a senior web developer at Dawson College, describes how the college migrated its sites to WordPress, building on various departmental sites and earlier versions. Key aspects of Dawson College's WordPress implementation are also summarized, including its use of WordPress for the main college website, specialty sites, research projects, applications, and blogs.
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
3. Dawson College at a glance
• 20,000 applications a year
• 10,000 students a semester
• 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
13. 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
14. 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
15. Version 5 – Mobile & Responsive
@jpurpleman | jpurpleman.ca
21. 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
• Login page restricted to Dawson College network
• SQL Injection
• Unwanted user-agents
@jpurpleman | jpurpleman.ca
22. 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
23. Backups
• Virtual machine backups via Veem
• MySQL Auto Backup
• https://sourceforge.net/projects/automysqlbackup/
• Daily
• Weekly
• Monthly
• Send data off-site
@jpurpleman | jpurpleman.ca
24. 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
26. Site environments
• Every website 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
30. 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
48. 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
57. Looking forward
• Iterative improvements pushed more
frequently
• More web application development on
WordPress
• Connecting sites and sharing data with
REST API
• More data gathering for site analytics and
usage
@jpurpleman | jpurpleman.ca
2001 I as a student user tested a beta version of this site
Academic administration was responsible for web content
Communications provided graphic designer and little input on content
Web was hosted at Dawson College
Static HTML + Dreamweaver templates for our main site
2000+ pages of institutional and dry content
3 or so years later we overhauled the home page mainly
Created frankensite
Content didn’t change
Internal page design / structure didn’t change
Overcame the limitations of our non-content areas on the home page
CMS backend
Each site was uniquely designed
No consistent look and feel
Units had full creative control with the help of a web designer
Few departments actively updated content
65 separate installs
No consistent version numbers
No core and plugins updates
Server security wasn’t a priority
Users had bad passwords
Hacked 3 times
Different sites
Infected weeks prior
Previous backups were useless
Needed scanners to find unwanted files
Sites were exploited for bragging rights
Communications responsible for web content
“Institutional” content and “departmental” content was merged into one site
A unified 3rd party content management system was purchased
Website was moved off-site
Editing content wasn't easy for the non-tech
Multi-lingual support was non-existant
Technical support was slow to respond
Service wasn't reliable
Support for CMS was dropped
Why did we go with them? The sales guy could sell ice to an eskimo
Pull content from 3rd party CMS into a WordPress site
Audit and categorize content
Identify pages to migrate
Pull content into development WordPress site
Released with same design
Reformat in WordPress
Looked at various higher education sites
Redesigned from scratch
Re-envisioned the navigation and site structure
Used customizer for editing sliders and “buttons”
Hired for content and training support
Helped departments rework their content
Ported content for all the others
SharePoint to manage
Like a main WP it’s for information gathering
I’ve got project names, contact people
A list of servers sites are on
A list of versions sites are on and so on.
Per install I know what version of WordPress core it’s running
What server it’s hosted on and what database it’s connected to