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: A Study of Our Path Using WordPress

837 views

Published on

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.

Published in: Internet
  • Be the first to comment

  • Be the first to like this

The Dawson Way of Doing Things: A Study of Our Path Using WordPress

  1. 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. 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. 3. @jpurpleman | jpurpleman.ca
  4. 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
  5. 5. The Early Years @jpurpleman | jpurpleman.ca
  6. 6. 2002 – Unified website branding @jpurpleman | jpurpleman.ca
  7. 7. 2006 – New home page and header @jpurpleman | jpurpleman.ca
  8. 8. 2006 - Department / program websites @jpurpleman | jpurpleman.ca
  9. 9. 2006 - CMS based sites @jpurpleman | jpurpleman.ca
  10. 10. @jpurpleman | jpurpleman.ca
  11. 11. 2008 Redesign @jpurpleman | jpurpleman.ca
  12. 12. 2008 – Unified website branding @jpurpleman | jpurpleman.ca
  13. 13. 2010 – Blogs & Writing in Disciplines @jpurpleman | jpurpleman.ca
  14. 14. 2013 Redesign @jpurpleman | jpurpleman.ca
  15. 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
  16. 16. 2013 – Identify Platform @jpurpleman | jpurpleman.ca
  17. 17. 2008 @jpurpleman | jpurpleman.ca
  18. 18. 2014 – Phase 1 @jpurpleman | jpurpleman.ca
  19. 19. 2014 – 7 Month Migration Import Audit & Identify Import Selection Build a theme Release Same Design Reformat In WP @jpurpleman | jpurpleman.ca
  20. 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. 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. 22. 2015 – Mobile & Responsive @jpurpleman | jpurpleman.ca
  23. 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
  24. 24. Current Status @jpurpleman | jpurpleman.ca
  25. 25. Web staff IT 3 Communications 1 Staff & Faculty 200+ @jpurpleman | jpurpleman.ca
  26. 26. Web sites • www.dawsoncollege.qc.ca • Computer Science • Nursing • Human Resources • Registrar's Office • Student Fees • athletics.dawsoncollege.qc.ca • library.dawsoncollege.qc.ca • maps.dawsoncollege.qc.ca @jpurpleman | jpurpleman.ca 150 25+
  27. 27. 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
  28. 28. WordPress infrastructure @jpurpleman | jpurpleman.ca Main website visitors
  29. 29. Web server environment • Virtualized web servers • 16G of ram • 4 cores • Nginx & PHP-FPM @jpurpleman | jpurpleman.ca
  30. 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. 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. 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. 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
  34. 34. Project Build @jpurpleman | jpurpleman.ca
  35. 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
  36. 36. Tools • PHPStorm • WP Awesome Config • Git • WP-CLI • WP Migrate DB Pro • Custom bash scripts • https://github.com/jpurpleman/WordPress-Stuff @jpurpleman | jpurpleman.ca
  37. 37. WP Awesome Config • https://gist.github.com/ashfame/1923821 @jpurpleman | jpurpleman.ca
  38. 38. Git • We track • Core • Must-use Plugins • 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
  39. 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
  40. 40. Themes and Plugins @jpurpleman | jpurpleman.ca
  41. 41. Themes • Underscores • Canvas by WooCommerce • Twenty Seventeen • Twenty Sixteen • Twenty Fifteen • https://www.wordpress.org/themes @jpurpleman | jpurpleman.ca
  42. 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. 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. 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
  45. 45. We use WordPress for… @jpurpleman | jpurpleman.ca
  46. 46. Primary website @jpurpleman | jpurpleman.ca
  47. 47. Conference sites @jpurpleman | jpurpleman.ca
  48. 48. Specialty sites @jpurpleman | jpurpleman.ca
  49. 49. Specialty sites @jpurpleman | jpurpleman.ca
  50. 50. Research grant projects @jpurpleman | jpurpleman.ca
  51. 51. Research grant projects @jpurpleman | jpurpleman.ca
  52. 52. Research grant projects @jpurpleman | jpurpleman.ca
  53. 53. Web-based applications @jpurpleman | jpurpleman.ca
  54. 54. Web-based applications @jpurpleman | jpurpleman.ca
  55. 55. Blogs @jpurpleman | jpurpleman.ca
  56. 56. Show and tell! @jpurpleman | jpurpleman.ca
  57. 57. Custom Backend Login @jpurpleman | jpurpleman.ca
  58. 58. Custom dashboard widgets @jpurpleman | jpurpleman.ca Custom dashboard widgets
  59. 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
  60. 60. Admin Additions • Added User Guides to the pull down help @jpurpleman | jpurpleman.ca
  61. 61. Contact blocks with Shortcode UI @jpurpleman | jpurpleman.ca
  62. 62. Contact blocks with Shortcode UI @jpurpleman | jpurpleman.ca
  63. 63. Contact blocks with Shortcode UI @jpurpleman | jpurpleman.ca
  64. 64. SharePoint Management @jpurpleman | jpurpleman.ca
  65. 65. Looking Forward @jpurpleman | jpurpleman.ca
  66. 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
  67. 67. Thank you! Questions? DAWSON COLLEGE @MYDAWSONCOLLEGE WWW.DAWSONCOLLEGE.QC.CA JONATHAN PERLMAN @JPURPLEMAN WWW.JPURPLEMAN.CA

×