Skip to content

Instantly share code, notes, and snippets.

@mehrshaddarzi
Forked from carlodaniele/plugin-filter.php
Created February 1, 2018 14:21
Show Gist options
  • Save mehrshaddarzi/b61884a827443646e4bd56d6a41663ba to your computer and use it in GitHub Desktop.
Save mehrshaddarzi/b61884a827443646e4bd56d6a41663ba to your computer and use it in GitHub Desktop.
A Must-use plugin to filter active plugins in on a per-page basis.
<?php
// returns the path of the request URI without the query string
// see http://php.net/manual/en/function.parse-url.php
// and http://php.net/manual/en/reserved.variables.server.php
// and http://php.net/manual/en/url.constants.php
$request_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );
$is_admin = strpos( $request_uri, '/wp-admin/' );
// add filter in front pages only
if( false === $is_admin ){
add_filter( 'option_active_plugins', 'kinsta_option_active_plugins' );
}
/**
* Filters active plugins
*
* @param array $plugins An array of active plugins.
*/
function kinsta_option_active_plugins( $plugins ){
global $request_uri;
$is_contact_page = strpos( $request_uri, '/contact/' );
$unnecessary_plugins = array();
// conditions
// if this is not contact page
// deactivate plugins
if( false === $is_contact_page ){
$unnecessary_plugins[] = 'contact-form-7/wp-contact-form-7.php';
$unnecessary_plugins[] = 'custom-post-type-ui/custom-post-type-ui.php';
$unnecessary_plugins[] = 'query-monitor/query-monitor.php';
}
foreach ( $unnecessary_plugins as $plugin ) {
$k = array_search( $plugin, $plugins );
if( false !== $k ){
unset( $plugins[$k] );
}
}
return $plugins;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment