Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

The Dawson Way of Doing Things

2,208 views

Published on

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.

Published in: Technology
  • Be the first to comment

The Dawson Way of Doing Things

  1. 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. 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. 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
  4. 4. 2001 – 2007 @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  5. 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. 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. 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
  8. 8. @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  9. 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
  10. 10. 2007 – 2013 @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  11. 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. 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
  13. 13. 7 Month Migration @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  14. 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. 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
  16. 16. Audit content • Keep • Revise • Trash • Wtf?!? @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  17. 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
  18. 18. 1 Year Redesign @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  19. 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
  20. 20. Current Status @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  21. 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. 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. 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
  24. 24. WordPress infrastructure @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016 Development WWW Everything else
  25. 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. 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. 27. Backups • Daily file snapshots • MySQL Auto Backup • https://sourceforge.net/projects/automysqlbackup/ • Daily • Weekly • Monthly @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  28. 28. WordPress installs @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016 4.5, 52 4.4, 5 4.3, 1 4.2, 3 4.1, 3
  29. 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
  30. 30. Site Build @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  31. 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
  32. 32. Before site launch @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016 Development Production
  33. 33. After site launch @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016 Development Production
  34. 34. Tools • WP-CLI • WP Awesome Config • Git • WP Migrate DB Pro @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  35. 35. WP-CLI wp core download wp core config --dbname="wp" --dbuser="wp" --dbpass="pass" wp core install --url="http://wpcourse.dawsoncollege.qc.ca/" --title="WordCamp Montreal Website" --admin_user="wordcamp" --admin_password="password" --admin_email="wc@dawsoncollege.qc.ca" @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  36. 36. WP Awesome Config • https://gist.github.com/ashfame/1923821 @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  37. 37. Git • We track • Core • Plugins • Themes • We don't track • local-config.php • dev-config.php • staging-config.php • production-config.php • .DS_STORE • *.log • .htaccess • sitemap.xml • sitemap.xml.gz • wc-logs/* • wp-content/blogs.dir/ • wp-content/cache/ • wp-content/upgrade/ • wp-content/uploads/ @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  38. 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. 39. WP Migrate DB Pro @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  40. 40. Themes and Plugins @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  41. 41. Themes • Underscores • Canvas by WooCommerce • Twenty Sixteen • Twenty Fifteen • Twenty Fourteen @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  42. 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
  43. 43. Multi-site @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  44. 44. Multi-site www.dawsoncollege.qc.ca 135+ Various departments Segregated content Athletics 10 1 site per sport E-Learning 2 Multi-lingual Confucius Institute 3 Multi-lingual @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  45. 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
  46. 46. We use WordPress for… @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  47. 47. Administrative information Human Resources Payroll Student Fees IT services @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  48. 48. Program promotion • Admissions • Course list • Faculty list • Student work @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  49. 49. Conference sites • TedX • NetBeans Day @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  50. 50. Specialty sites Athletics Library @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  51. 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
  52. 52. Web-based applications • Timetable and Registration Guide • Admissions Status @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  53. 53. Blogs @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  54. 54. Show and tell! @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  55. 55. Dawson College Dashboard @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  56. 56. Contact blocks with Shortcode UI @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  57. 57. Contact blocks with Shortcode UI @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  58. 58. Contact blocks with Shortcode UI @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  59. 59. Contact blocks with Shortcode UI @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  60. 60. IT HelpDesk articles @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  61. 61. IT HelpDesk articles @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  62. 62. Athletics team pages @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  63. 63. Athletics team pages @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  64. 64. Looking Forward @jpurpleman | jpurpleman.ca WORDCAMP MONTREAL 2016
  65. 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
  66. 66. Thank you! Questions? DAWSON COLLEGE @MYDAWSONCOLLEGE WWW.DAWSONCOLLEGE.QC.CA JONATHAN PERLMAN @JPURPLEMAN WWW.JPURPLEMAN.CA

×