Skip to content

Instantly share code, notes, and snippets.

@carl-alberto
Forked from carlodaniele/plugin-filter.php
Last active May 10, 2021 05:36
Show Gist options
  • Save carl-alberto/431a0f8e77431abbbda820b5bc21804a to your computer and use it in GitHub Desktop.
Save carl-alberto/431a0f8e77431abbbda820b5bc21804a to your computer and use it in GitHub Desktop.
A Must-use plugin to filter active plugins in on a per-page basis. selectively load plugin per page
<?php
/**
* @package active-plugins
* @version 1.0
*
* Plugin Name: Active Plugins
* Plugin URI: http://wordpress.org/extend/plugins/#
* Description: This is a development plugin
* Author: Carlo Daniele
* Version: 1.0
* Author URI: https://carlodaniele.it/
*/
// shortcode to list active plugins
add_shortcode( 'activeplugins', function(){
$active_plugins = get_option( 'active_plugins' );
$plugins = "";
if( count( $active_plugins ) > 0 ){
$plugins = "<ul>";
foreach ( $active_plugins as $plugin ) {
$plugins .= "<li>" . $plugin . "</li>";
}
$plugins .= "</ul>";
}
return $plugins;
});
$request_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );
$is_admin = strpos( $request_uri, '/wp-admin/' );
if( false === $is_admin ){
// filter active plugins
add_filter( 'option_active_plugins', function( $plugins ){
global $request_uri;
$is_contact_page = strpos( $request_uri, '/contact/' );
// change elements according to your needs
$myplugins = array(
"contact-form-7/wp-contact-form-7.php",
"code-snippets/code-snippets.php",
"query-monitor/query-monitor.php",
"autoptimize/autoptimize.php"
);
if( false === $is_contact_page ){
$plugins = array_diff( $plugins, $myplugins );
}
return $plugins;
} );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment