Self Hosted Plugins

This plugin helps you to self-host your WordPress plugins on your own site. It even uses an extend/plugins/ structure

Author:Top Quark (profile at
WordPress version required:3.0
WordPress version tested:3.6.1
Plugin version:1.0.10
Added to WordPress repository:06-06-2011
Last updated:17-09-2013
Warning! This plugin has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.
Rating, %:96
Rated by:9
Plugin URI:
Total downloads:1 871
plugin download
Click to start download

When I first went to host my plugins on my own site, I was surprised that there wasn't anything out there to help me with the tricky job of deploying updates. WordPress has updating built into it, but it's not easy to apply that to plugins hosted on your own site.

Until now...

Using this plugin, you can maintain a repository of your self-hosted plugins on your own site. It makes use of the confusing web of WordPress hooks that are necessary to allow remote sites to look for and install updates from your own server. This plugin will keep track of the number of downloads for you. Ratings are not currently supported, but I hope to add that into a later version.

Call To Developers

I think this could be a really interesting project that I could see quickly growing beyond what I'd be able to handle personally. Is anyone interested in getting involved? Let's start a conversation in the forum.

Back to your regularly scheduled plugin...

It includes shortcodes to allow you to display your plugin information, in the familiar plugin-details layout, right in your own site.

The download link includes hooks to allow you to program authentication (if you want to charge for your plugin)

Important Plugins stored in your repository will be altered to allow the update process to function:

  1. A directory called __plugin-updates is added, containing only the file plugin-update-checker.class.php
  2. Some code is inserted at the end of your main plugin file to instantiate the above class
  3. All instances of the file .DS_STORE are removed (what can I say, I develop on a Mac and that file just bugs me)

For more information, see the FAQ section.


This plugin adds rewrite rules making it so that it appears your plugin is stored in an extend/plugins directory from your site, mimicking So, The details page for the latest version of your plugin is always at No pages or posts are added to make this possible - the page is generated (i.e. spoofed) dynamically when an extend/plugins call comes in.

If your default template isn't a full-width template, you might consider making use of the filter template_include in the following manner

function my_template_redirect($template){
    if (defined('SHP_SPOOFED_PLUGIN_PAGE')){ // Only set if we've spoofed a page.
        $template = get_bloginfo('template_url').'/template-my-template.php'; 
    return $template;

If you want to disable this feature, add the following filter:

add_filter('shp_enable_redirect',create_function('$a','return false;'));