Plugins are pretty popular, since it is easy to adjust your blog or website to your liking with Plugins. Less popular are Dropins.
WordPress alows to replace some functions with Dropins. The list of possibilities isn't big and not well documented. But I like to use Dropins to enhance the possibilties of caching, especially APC and Memcache. But also to adjust uploads, permalinks and similar things are a typical scenario for Dropins.
Most of the Plugins are in the WP Content Folder, normally
wp-content or via constant
WP_CONTENT_DIR or the URL in
WP_CONTENT_URL is defined.
// Custom content directory define( 'WP_CONTENT_DIR', dirname( __FILE__ ) . '/wp-content' ); define( 'WP_CONTENT_URL', 'http://' . $_SERVER['HTTP_HOST'] . '/wp-content' );
I use this in my dev environment or at my clients project for example, since I can access Plugins via FTP in different ways. See my WordPress Starter Repo on Github for more solutions and hints about this topic.
Only Dropins, which get loaded with a language key, aren't in this folder, instead they are in
/wp-content/languages. Alternatively you can define the folder via the constant
The Dropin for the German key de_DE takes that path. See the repo for read the source or find more information.
In Backend are Dropins listed since version 3.0, but only the following in the table and not the Dropin to the language key. Also you can not just deactivate or activate it via backend, that's why Plugins are preferred for some solutions.
Below is a table with all Dropins I know or I have found. The possible Dropins are echoing via the function
|File||Type of Dropin||Active since||Context|
||Advanced or Alternative Cache||Constant
||Own database class||Always||Single installation|
||Own database error alert||At DB Error||Single installation|
||Own installation routine||At installation||Single installation|
||Own maintenance message||At updates, maintenance||Single installation|
||External Object Cache||Always||Single installation|
||Before the WP Multisite Installation gets loaded||If constant
||Own message, when a blog gets deleted||If a blog gets deleted||Multisite installation|
||Own message, if a blog is set inactive||If a blog becomes inactive||Multisite installation|
||Own message, if a blog got suspended||When a blog gets marked as archive or spam||Multisite installation|
||functions at active language key||When language key set in constant
||Single & multisite installation|
Update: see the current solution for a custom maintenance mode on the post from Christopher.