• Skip to primary navigation
  • Skip to main content
  • Skip to footer
  • Store
  • Support
  • Theme Documentation
  • My Account
  • Cart

9seeds

Building Custom WordPress Solutions | Plugin Development

 
  • Custom Development
  • Themes
  • Plugins
  • About
  • Contact
  • Blog

debugging

How to troubleshoot a WordPress site using Plugin Detective

Posted on September 5, 2019

When a feature stops working on your WordPress website, minor panic can set in. If yours is one of the approximately 40% (as of this article’s publish date) of websites that’s running WordPress 5.2 or above, you’ve probably received an email entitled, “Your Site is Experiencing a Technical Issue”, and you’re off to quickly fix the problem. But, what if you’re managing a website below version 5.2 or didn’t receive the snazzy new error email? A difficult-to-troubleshoot error can ruin an entire afternoon of productivity (and sales) attempting to find the issue and fix the site. 

Here’s how to troubleshoot a WordPress website prior to WordPress 5.2 (spoiler: not too efficient)

  1. Disable all of the plugins on your website.
  2. Open a second tab with the front-end of your website and ready the reload button.
  3. Reenable plugins one by one as you refresh the front-end of your website.
  4. Find the plugin responsible for the issues, and fix accordingly.

For a long time, this has been the common advice on how to troubleshoot a WordPress site prior to WP 5.2. While not technically wrong, this process can be time consuming and arduous at a moment when speed and accuracy matter. In 2018 at WordCamp Orange County, WordPress pros Natalie MacLees and Nathan Tyler presented a new spin on an old method of troubleshooting WordPress websites.

How to troubleshoot a WordPress site the efficient way

Natalie and Nathan dug deep into their classic programming knowledge and created a plugin that automates the plugin enable/disable process using a binary search. The plugin is called Plugin Detective and it finds broken plugins in a fraction of the time that it’d take the traditional method. Here’s how it works:

  1. Plugin detective disables half of the plugins.
  2. If the problem persists, the plugin re-enables the first half, and disables the second half.
  3. If the problem is fixed, the plugin begins the same process on the new half, and continues until the offending plugin is determined.

Because the plugin uses a binary search, with every iteration, half of the plugins are ruled out. On a site with dozens of active plugins, this method saves a lot of time.

Putting Plugin Detective to the test

In theory Plugin Detective is a great idea, but I wanted to test out how it works on a real site. I installed a test site with sixteen active plugins, and intentionally put a typo in one of the plugin files to render the site inoperable.

The Plugin Detective (named Otto) started by asking if there were any required plugins that needed to be left on for the site to load. After all, there’s no sense disabling a key plugin and causing a different issue. I told Otto I didn’t have any required plugins on my site, and he started by disabling everything and asking me if the issue was fixed. (If the error was still happening, that meant that the cause of the error was probably something else, like mu-plugins or the theme.) Since my issue was fixed, Otto knew that one of the plugins was to blame.

The plugin ran through the list, activating or deactivating half of the list each time and asking me after each pass if the issue was resolved. Overall, it took seven passes for the Plugin Detective to determine which plugin was broken, and took less than a minute of elapsed time. Otto was also able to deactivate the offending plugin for me, so I didn’t have to mess around with (S)FTP or the database to manually disable it.

How to troubleshoot without access to wp-admin

The plugin worked really well, but I started to think, “what are the chances that the site I’m trying to troubleshoot has this plugin installed?” or, “what happens if I can’t get into the backend at all because of a white screen?”. Well, Natalie and Nathan must have had those same thoughts when they created Plugin Detective. If the plugin isn’t already installed on the broken site, it’s straightforward to get Plugin Detective up and running:

  1. Manually copy the unzipped plugin folder over to /wp-content/plugins
  2. Go to YOURSITE.COM/wp-content/plugins/plugin-detective/troubleshoot (which will load even if the site won’t load)
  3. Log in with a valid WordPress administrator account
  4. Say hi to Detective Otto!

Final thoughts on Plugin Detective

The ability to quickly and easily track down a plugin conflict on a white-screening site is impressive, and overall the Plugin Detective is an amazing plugin. Natalie and Nathan have really re-written the guide on how to troubleshoot a WordPress site using Plugin Detective, and we’ve quickly added the plugin to our troubleshooting toolkit for sites on older WordPress versions.

Continue Reading

Robert Gillmer

    More by Robert Gillmer

    Footer

    Get in Touch

    • New Project Inquiry
    • Product Support and General Inquiry
    • Store Purchase Terms and Conditions
    • Store FAQ
    • Cookie Policy
    • Privacy Policy

    Our Services

    • Custom WP Development
    • Theme Store
    • Plugin Store

    WordPress Plugins for Sale

    • Time Tracker
    • Authorize.net SIM Gateway

    WordPress Plugins for Free

    • Simple Calendar
    • WP Chargify
    • Facebook
    • Twitter
    • LinkedIn
    • WordPress
    • GitHub

    Copyright 2025 | 9seeds, LLC

    Like nearly all websites this one uses cookies too. Like most users we think consent banners like these are a dumb solution, but it's what we've got until new laws are passed. We use cookies on our website for remembering your preferences, for example if you're logged in or what is in your cart. We also use 3rd party cookies for analytics so we know what pages on the site are most popular. By clicking “Accept”, you consent to the use of ALL the cookies.
    Do not sell my personal information.
    Cookie SettingsAccept
    Manage consent

    Privacy Overview

    This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience and may even preclude you being able to login to the website.
    Necessary
    Always Enabled
    Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
    CookieDurationDescription
    __stripe_mid1 yearThis cookie is set by Stripe payment gateway. This cookie is used to enable payment on the website without storing any patment information on a server.
    __stripe_sid30 minutesThis cookie is set by Stripe payment gateway. This cookie is used to enable payment on the website without storing any patment information on a server.
    cookielawinfo-checkbox-advertisement1 yearSet by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Advertisement" category .
    cookielawinfo-checkbox-analytics1 yearSet by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Analytics" category .
    cookielawinfo-checkbox-necessary1 yearSet by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Necessary" category .
    cookielawinfo-checkbox-others1 yearSet by the GDPR Cookie Consent plugin, this cookie is used to store the user consent for cookies in the category "Others".
    cookielawinfo-checkbox-performance1 yearSet by the GDPR Cookie Consent plugin, this cookie is used to store the user consent for cookies in the category "Performance".
    Functional
    Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
    Performance
    Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
    Analytics
    Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
    CookieDurationDescription
    _ga2 yearsThe _ga cookie, installed by Google Analytics, calculates visitor, session and campaign data and also keeps track of site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognize unique visitors.
    _gid1 dayInstalled by Google Analytics, _gid cookie stores information on how visitors use a website, while also creating an analytics report of the website's performance. Some of the data that are collected include the number of visitors, their source, and the pages they visit anonymously.
    CONSENT2 yearsYouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data.
    Advertisement
    Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
    CookieDurationDescription
    VISITOR_INFO1_LIVE5 months 27 daysA cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface.
    YSCsessionYSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages.
    yt-remote-connected-devicesneverYouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
    yt-remote-device-idneverYouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
    Others
    Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.
    CookieDurationDescription
    cookielawinfo-checkbox-functional1 yearThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
    SAVE & ACCEPT
    Powered by CookieYes Logo