Client Status

Client Status is a dashboard that keeps tabs on your clients WordPress installations by checking for the latest updates to the WordPress core, plugins and themes. You have the option to enable emails to administrators of your site and the clients the site belongs to. Client Status can check for updates hourly, twice daily, or daily (uses the WordPress Cron system).

Check it out on WordPress.

31 thoughts on “Client Status

  1. great concept but have installed the plugin on my master site and another site but on the master, when I go to Dashboard > Client Status is is just a blank page with the title, no option to Add New?

  2. OK, ignore my last, found it under the Clients section. Bit confusing with menu items under 3 separate sections on the dashboard. Can I suggest you put them all under one section, e.g., have a Clients Status section with Settings, Clients and Client Status?

  3. Hi –
    Thanks for the plugin, it seems cool & I would love to use it.
    But I am having the same problem as the guy above: settings > client status takes me to a page that asks for a security key. Where do I get one?

  4. Figured this out! For anyone else having this problem, I had to set it to ‘dashboard’ and fill out the info. Made up my own key. Then the other options appeared in my dashboard.
    Seems kind of obvious now [blush]

  5. Is there a minimum WP version that is required? I’ve got a client using 2.9.1 and I am unable to configure the client. Nothing changes when I try to select between Client or Dashboard.

  6. Client Status is a fantastic plugin. I switched to it after the alternative went AWOL. Any advice as to why it works for some WP installs and not others. I’ve got multiple WP installs on the same dedicated server and some domains work and others don’t. The configuration is the same for all the WP installs.

  7. It seems to be a problem with updating on the dashboard site. When i visit the client status only the first 10 sites is updated recently. Those all have the same update time. But the rest (I have 15 sites now) is not updated since last time I visited the page. I do a manual client update, and they start showing needed actions. In settings I have allowed client update using WP_cron and set it to hourly. Is there some limitation to how many clients the cron job will perform?

    • Hey Knut,

      You are absolutely right. I’ll have an update out shortly, but if you open client-status.php and go to line 357, replace it with the following:

      query_posts(array('post_type' => 'client_status_client', 'orderby' => 'title', 'order' => 'ASC', 'posts_per_page' => -1));


      • Thank you for the update. It was using the default number of “posts per page”, I guess.

        Do you know what triggers a blog to actually check if there are updates to it’s installed themes/plugin/core? When the status dashboard says no updates available (all green), even just after a recent manual update, and I then actually visit the client blog’s admin area, then there IS an update avaiable after all. I guess then that it’s my visit that triggers WordPress to do the remote check. Could this plugin’s status request also trigger the client to check for own updates? If not before the response, so until the next time, may be.

        This is not a problem with this plugin, neither a feature request at this time. I just wonder if you know if this could be possible.

        • Hey Knut,

          Yes, it was pulling the default number of posts per page.

          As for your other issue, I’m not sure how to resolve this. When I initially set this up, my plan was to have client-status check for new updates when the data.php (in client-status) file is refreshed. I grabbed the code from update-core.php to see how WordPress was checking for updates and I’m calling those functions in data.php. Maybe I’m missing something, but the functions I used are:

          • get_core_updates()
          • get_plugin_updates()
          • get_theme_updates()

          Maybe there is something else I need to be calling…

  8. I don’t have enough WP knowledge on what you could do, but after some simple investigation the wp_version_check, wp_update_plugins and wp_update_themes might be candidates. wp_schedule_update_checks might give us a clue on what WordPress core actually do to check this.

    These functions are in wp-includes/update.php as they are not purely admin functions.

    And again, this plugin does what it’s supposed to do, at a reasonable level of sophistication.

    The problems with missed updates are in the core, and possibly related to sites with low traffic, the API restrictions or something or the fact that the automated checks are only scheduled as “twicedaily”. It could be reasons for not doing such checks every hour or so.

    Or maybe just a spawn_cron() could do the trick. I suspect cron jobs are not “spawned” unles you actually visit a blog. A request for a post type returning some XML, like this plugin, might not spawn cron, and therefore updates may be missed until someone visits the blog.

    I’ll try to learn mor about this in the coming weeks, and will get back to you if I have a better idea.

  9. Hey, Eric —

    This is a great tool. I had considered using the one available at, but the guy just flaked.

    What is the possibility of taking this a couple of steps farther down the road?


    1. Remotely trigger a backup of the site before updating. I use BackupBuddy, but it might be something simpler (and free) that is triggered by xmlrpc.php and creates a DB dump + files zip.

    2. Trigger one or more updates: core, plugins, themes. It might not be possible to everything this way, but it would be nice to get the do-it-by-rote stuff out of the way.

    I am a programmer (38+ years, 8+ PHP, ~6 months WP) and I would be interested in contributing to the effort.

    • Hi Peter,

      Thanks for your interest in the plugin. I’m wondering if it would be better to just add some hooks into the base plugin code to allow for others to create their own plugins that build on top of my code. I’ve been working on an update to the code to make it object-oriented. I need to spend some more time to get it all finished and make another release. I’ll let you know if I could use your help somewhere.



  10. Hello Eric,
    We would definitely like to thank you for taking the time to develop client status as it is a very useful tool to use. At the moment we have noticed that in WordPress version 3.2.1 client status is not working. When trying to update and check on the client sites the page refreshes but it does not update. Perhaps it’s a java or ajax issue we are not sure.

    We have tried using different themes another disabling plugins but the issue remains, any idea what it might be?

  11. Started getting some errors after I updated my webserver.

    Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 3: parser error : Extra content at the end of the document in /var/www/vhosts/ on line 152

    Warning: simplexml_load_string() [function.simplexml-load-string]: Warning: Cannot modify header information – headers already sent by (out in /var/www/vhosts/ on line 152

    Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in /var/www/vhosts/ on line 152

    Warning: First parameter must either be an object or the name of an existing class in /var/www/vhosts/ on line 169

    I am getting these errors on all but 2 of the sites I was monitoring. All sites are hosted on the same server.

    Operating System : Linux
    Server : Apache
    Memory usage : 58.71 MByte
    MYSQL Version : 5.1.54
    SQL Mode : Not set
    PHP Version : 5.3.3
    PHP Safe Mode : Off
    PHP Allow URL fopen : On
    PHP Memory Limit : 256M
    PHP Max Upload Size : 2M
    PHP Max Post Size : 8M
    PHP Max Script Execute Time : 30s
    PHP Exif support : Yes ( V1.4 )
    PHP IPTC support : Yes
    PHP XML support : Yes

    • Hey Justin,

      Can you verify what that line is for me on your install? Mine shows a print_r() line which is for debugging. If that’s what you have, you can safely comment that out.


    • Hey Justin,

      Can you check to see if WP_DEBUG is enabled on your client sites throwing the errors? If so, turn it off. It sounds like it’s printing the errors out in the xml file being passed to your main server. You can check the output by hitting the little icon next to the right of the “Server Information” text on the right side of the client information (on the dashboard page). If you view the source of that xml file and it has php errors, you most likely have WP_DEBUG enabled.


  12. Three problems:

    1. When updating a client (CPT) in the editor, after the update, the admin bar is not shown. The tp of the admin page is distorted until I navigate to another admin page. Probably some scripting or invalid html being produced.

    2. When trashing and restoring a client, the client URL is sometimes gone.

    3. When a site (client) is down, unreachable or gives an error, the client status screen is distorted. Nothing is collapsed and script funsctions doesn’t work. Bad html is produced. This should be handeled more gracefully. What to do when one site is down or has problems?

    Enmhancement request: Only check and display published or private clients. When a client is still draft, it should not be checked and not displayed. (Pending ones could be checked, but not displayed).

  13. The custom post type Clients show up under Appearance – Menues (choices for making menu items). Since clients are not sown on the front, there is no need to have them there.

    I thing this is the parameter show_in_nav_menus. This should be false.

  14. I now have 30 sites, or clients defined. It seems there are some problems getting them to be automatically updated. I use refresh.

    Another minor problem is that if a site is down or has errors, not ust a failed key, the output of the client statuses hangs. Thre should be more error handling, and then go on to the next site.

    One big problem had to be resolved. On one site the XML from data.php cold not be fetched, not even in browser with the proper MD5 encoded key. Tried in all available browsers and they all said ERR_CONTENT_DECODING_FAILED and refused to display any XML. So there is may be a configuration problem at that particular server. But this code at the top and bottom of data.php solved it:
    if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
    ini_set('zlib.output_compression_level', 9);
    } else

    … rest of php output …

    • Hey Knut,

      Thanks for your continued use of Client Status. I’ve got some code that I need to commit. I’ll try and make a release sometime soon that will add some better error handling.



Leave a Reply

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