38 Comments

  1. One thing to note is that auto-updates are only for minor versions by default. Minor versions are often also security releases. There are some hosts that do auto-updates for major versions, but at this time, that is not a core decision. Putting define( 'WP_AUTO_UPDATE_CORE', false ); in your wp-config will disable auto-updates for minor and security releases which means you will need to manually keep your site updated when a security release comes out.

  2. Hi,
    If I understand correctly you have to copy your sites to local every time you want to update? I have a client site that hasn’t been updated in ages and he recently asked me to take care of it. I’m not super experienced in fixing broken sites so I’m pretty scared that something will “break”…I certainly do not want to do the updates on the live site.

    1. I would say rather, if you are managing a client site, you should have a local and dev/testing site where you can test updates before going live. That way you don’t have to copy to local first.

      1. Just wanted to apologise for commenting on this with the wrong account…

    2. Hi Luisa,

      Like psykro said, local is best for testing, then you can push to a live staging to confirm everything looks the same in a live environment, then that pushes to Production. That’s standard practice for professional devs.

      But I know from my own experience that it takes a long time to learn those skills and get those tools configured and do it in a way that is safe and doesn’t take gobs of time.

      So for this one client, here’s what I’d recommend:
      1) Install the Duplicator plugin on your live site : https://wordpress.org/plugins/duplicator This will allow you to export an “Archive” or ZIP file of the whole site including the database.
      2) Buy DesktopServer. Choose the Import tool, and Import that site from the ZIP file. Duplicator and DesktopServer work really well together.
      3) Do all your updates locally. If there’s errors, you’ll find them here and can report to your client about the work involved in getting everything up and running with the latest.
      4) Once you and your client agree to terms on the time spent on updating, do the work locally and use DesktopServer to push it live.

      Once you have that in place, get in a habit of doing ALL your updates locally first, that way the local copy is always in parity with the live. From then on it gets easier.

      Thanks and good luck!

      1. Thank you so much!

  3. MF Simchock says:

    Well played Matt. Well played.

    Two thoughts to add:

    1) I think it would be helpful to touch upon how to have this conversation with clients. I mean, what do you say to (a client saying), “…what do to mean WP auto-updated and broke a plugin?? I don’t give a $#%^ I didn’t ask you to update it. Fix it. NOW!! And I ain’t paying for it.”

    I’m sure you’d agree, not every client is willing (or able) to pay a monthly maintenance / retainer fee. In fact, it would be interesting to study / know how many actually do vs how many take the “pay as you go” route. I could be wrong but I’m willing to bet it favors the latter. Needless to say, the small fish often have the biggest mouths.

    In either case, broken sites upset clients. And preventing that, as you show above, takes time and effort. Time === money, right :)

    2) Instead of gazillions of WP devs and “lay people” (i.e., those not interested in Slack, reading the core’s blog, etc.) chasing the same WP tale/tail , wouldn’t it make a lot of (#@$%^!) sense if there was a simple email list to sign-up for and/or a FB group and/or a Twitter accnt that did nothing but broadcast this schedule. NOT the day to day minutiae (e.g., following core) but simply “3 days to Pepper…” and then “2 day to Pepper…” and so on. Less noise. More quality. I think you get the point (of reducing so much duplicate effort.)

    Matt – You’d like to discuss #2, please send me an email. Perhaps it’s something – with some help – I can add to the WPezDeveloper umbrella?

    1. Per your first point, the way you have this conversation with clients is to explain before you even start a project for them that a website is software, and as such, needs to be updated frequently for security purposes and at any time that a major software release comes out for the platform it’s being built on. Then explain that you offer maintenance plans to mitigate the risk of running out-of-date software on their website, explain the pricing, and explain that they are assuming full responsibility for the maintenance and upkeep of their site without a maintenance plan and that your company charges x-times normal rates to fix a site that breaks or is hacked because it wasn’t on a maintenance plan. Set the stage WELL in advance and these conversations don’t have to be difficult :)

    2. Hey Mark.

      1) Check out our WP-Rollback plugin which will allow you to very easily revert plugins back to their functioning versions. Then bug the hell out of the plugin developer until they get it working with the latest Core version.

      Generally, I suggest don’t manage a website unless you’re getting paid for it. Clients who don’t understand that or treat you that way should get fired.

      2) Love that idea. But it’s not so straight-forward. An actual date typically isn’t published until Release Candidate 2. And it’s published in a blog post, so doing this programmatically would be challenging.

      Here’s what I think your tool *could* do. You could monitor progress of Core based on Trac programmatically and show “Version 4.7 is currently in Milestone 1”, then Milestone 2… etc. Then it gets to Beta Version 1, 2, 3, 4, etc. But then when it gets to Release Candidate 1 add a message that says “Time to start testing with Version 4.7!”

      Thanks for reading and your feedback!

  4. I love this. I love everything about this. Great write-up.

    I wonder if it might be useful to improve the messaging on the update screen to suggest deactivating all plugins prior to update. This tip alone is something I don’t think a lot of users really think about before updating and as you’ve stressed, is likely the easiest way to discover (and target) problem plugins without getting blindsided.

    1. That’s a good point. The default notification is pretty small and just says “Backup your Database, and read this article”:
      https://codex.wordpress.org/Updating_WordPress

      Destin Meza of WPEngine did a presentation at a couple different WordCamps on this subject. We did a write-up on it at WordImpress:
      https://wordimpress.com/afraid-wordpress-updates/

      Your suggestion reminds me of the popup we use in WP-Rollback which really makes it clear:
      https://github.com/WordImpress/WP-Rollback/wiki/Rolling-Back-Plugins

      I think it’s worth discussing ways to improve the user experience of the Core update process for sure. Thinking of it as preventative support rather than reactive support. Thanks for chiming in!

      1. Mika Epstein brought up a good (very unfortunate) point with this approach, and that is that there is a disappointingly high number of plugins that straight up delete options on deactivation (wut). I think that qualifies as developer error, but would no doubt come back on core as “WordPress’ fault”. Sigh.

  5. Much of maintaining and upgrading WordPress “the right way” depends on having the foresight to include a support plan from the outset of the project. The regret of omitting support is a growing pain that I suspect is all too common, and articles like this will hopefully save others in the future.

    The reality is maintenance/upgrades require tedious work, and it’s even more tempting to take shortcuts when you’re not being paid for your time. You need to either take responsibility for it upfront or make the client aware of whom it’s being offloaded to in advance. There will be conflicts, and someone will be called. If you don’t designate who, then it’s you by default.

  6. Great post. If you’re creating value for a client, as in supporting the site, doing updates, etc., you should be compensated for it.

    If you’re not providing support on a “best effort” basis, then shame on you. There will be combinations of WP, a given theme, and a given set of plug-ins, that simply will not work together…perhaps ever.

    Setting client expectations is critical; just like being prepared.

    1. Very true. Thanks for reading and your input.

  7. With all the conversation above it feels like I am the least experienced person here. Let me share what I do in case of any upgradation – may it be WordPress itself / theme in use / plugins in use / new plugins to install. I always use WP-Staging plugin (https://wordpress.org/plugins/wp-staging/) and first make the upgradation in the staging site. When everything works out ok, I make the changes to the actual site – uses a little extra time but saves a lot of frustration over broken site, threatening words from clients and finally I get a good night sleep.

    1. That sounds very responsible. Do what works, just do your job. That’s exactly what you’re doing! Nice!

  8. Bookmarked and sent to some of my clients. They understandably wonder why they should pay for maintaining free software. This article should answer most of their questions. Thanks!

  9. Matt

    Great post ! I never thought of turning off all plugins first. I’m definitely going to teach that to my students. :)

    I always update in two passes
    first plugins and themes, then WP.

    I also love that you stress for people to take responsibility for their own sites. Often people complain and don’t realize how good they have it with free WordPress.

    Christina

  10. We build websites for a living, like many others in this discussion.

    Our philosophy has been different from the very start. We work hard to avoid problems as opposed to figuring out how to fix them later on.

    After many years in the business using several different platforms we standardized on only developing client sites using the Genesis framework and (obviously) themes that work with it.

    These days many themes contain built-in functionality (i.e. Elegant Themes.) We believe in the semi-strict separation of “view” from “function.” Thus we use themes that concern themselves with appearance and we use plugins for functionality (i.e. a portfolio.)

    Second, we don’t use plugins for simple things… we prefer to just add the code ourselves (we have ‘deep’ technical / PHP abilities and an in-house library of routines.) We especially stay away from complex page-builder plugins.

    More important than the framework and the theme is our philosophy of using as few plugins as possible and we would never use an “aggregator” plugin like Jetpack. We vet the plugins we use very carefully by looking at the code and seeing if the developer followed the “rules” set by WP codex. If we can follow the code then we feel safe that if there is a break that either we can fix it and/or explain to the developer what and where the issue is.

    OK, maybe our sites don’t have all the whiz-bang eye-candy that others have, but they are solid out of the box, stable, maintainable, and they don’t break in the future. And for that, we charge ‘extra’ in that we are not the cheapest design house on the street. We tell clients that it is harder but better and cheaper in the long run to build it right instead of throwing a bunch of ‘unknown’ plugins into the mix and hoping for the best when WP updates come around. That is part of the value we sell.

    We tend to build Volvos and Ford pickups, not Ferraris and Aston Martins!

    1. That’s definitely a very reliable strategy to mitigate potential upgrade issues. In my experience there’s no amount of vetting that can protect you from an update that just doesn’t play well with other plugins in your environment, so staging/local is always best.

      Thanks for reading and for you input!

  11. We don’t design sites but we host them and manage them for clients who would not be able to do it themselves. We also rescue clients from situations where they have been hacked or made vulnerable from hosting/update failures.

    As we use our own infrastructure and run servers in KVMs, we find it best to create a restore of a current server image complete with WP installs DBs etc and then apply the update(s).

    This way we can hack about on a known and working base and find the problems across the whole platform eg Apache, Nginx, PHP requirements, OS changes and WP core.

    We also keep the plugins and themes up to date in a similar way. It has the benefit of showing you the whole process and the resulting improvements or bugs before you present your clients with a headache.

    Whether or not you use VMs or have the capacity online, it is also a great way to check your general backups and recovery processes work properly before you need it in anger!

    1. That’s definitely a great strategy as well. Very reliable and makes sense for larger agencies for sure. The majority of the WordPressers and site owners I interact with don’t have the resources or knowledge to do a setup like that. The bottom line though is simply to understand where your responsibility starts and where WordPress Core stops and be responsible rather than just blaming the code which thousands of people all over the globe have contributed to. Thanks for reading and for your input!

  12. I offer a service for my clients that includes WordPress Core and Plugin updates, most of whom are sole proprietors/professional bloggers. I don’t offer hosting, and I’m not the original developer for these clients (most either use an off-the-shelf theme and figure it out themselves, or hired a developer/designer for an initial design, but have since parted ways).

    Because of my price point, and the variety of hosting accounts my clients use, it’s simply impossible for me to maintain development servers for everyone. Even deactivating all plugins and reactivating one-at-a-time would be too time-consuming…and would likely introduce much greater downtime/maintenance windows.

    As such, my update strategy is:

    1. Backup.
    2. Wait a day or two after updates are released before actually updating (unless it’s patching a security vulnerability). Wait a few days for major version changes.
    3. Update plugins manually, one a time. Check functionality after each.
    4. Update all plugins before updating core.
    5. Fix any problems after-the-fact, or roll back if I can’t find the solution quickly.

    With this strategy, the amount of time I have to spend fixing issues is far less than if I were to have a dev site for each, or to follow the “deactivate all, update, reactivate one-at-a-time” strategy, so I’m able to charge my clients a more affordable price.

    With regards to WP Site Care — I’d be willing to bet they don’t follow the deactivate-update-reactivate strategy either… and I’d be surprised if they’re not using scripts to update plugins, rather than having a real human run the updates.

    1. Sounds like a solid strategy. While I don’t know the intimate details of how WP Site Care manages updates, I know them and their reputation and they’re solid. But I know plenty other developers like yourself who offer these services and the personal touch is something some business owners really highly value, so I think there’s always room for both. Thanks!

  13. MULLENWEEEEEEEEEG!!! AAAAAAAARRRRRRGGGGGHHHHH!

Leave a Reply

Your email address will not be published. Required fields are marked *