我试图找到一种解决方案来禁用Wordpress管理区域上的特定插件。问题是,在建立WooCommerce商店时,我使用Divi Builder,当您尝试对其进行编辑时,在产品页面上有时可以使用50mb的资源...如果我在那里禁用了一些插件,则加载时间会更快。我在其他主题上找到了以下代码:
add_filter( 'option_active_plugins', 'lg_disable_cart66_plugin' );
function lg_disable_cart66_plugin($plugins){
if(strpos($_SERVER['REQUEST_URI'], '/store/') === FALSE AND strpos($_SERVER['REQUEST_URI'], '/wp-admin/') === FALSE) {
$key = array_search( 'cart66/cart66.php' , $plugins );
if ( false !== $key ) unset( $plugins[$key] );
}
return $plugins;
}
但是不知道如何修改它,因此它仅在后端禁用选定的插件。换句话说:我不希望在编辑WooCommerce产品页面时加载该插件。
我们将不胜感激。
答案 0 :(得分:0)
由于在加载任何插件之前会触发“ option_active_plugins”,因此我们需要将代码拖放到mu-plugins目录中。还请记住,这些插件是在初始化主查询之前运行的-这就是为什么我们无法访问许多功能的原因,特别是条件标签始终会返回false。
请粘贴以下代码,或在您的wp-content文件夹的 mu-plugins 文件夹中下载gist。它将仅在帖子和页面区域禁用该插件。
<?php
/*
Plugin Name: Disable Plugin for URl
Plugin URI: https://www.glowlogix.com
Description: Disable plugins for for specific backend pages.
Author: Muhammad Usama M.
Version: 1.0.0
*/
add_filter( 'option_active_plugins', 'disable_plugins_per_page' );
function disable_plugins_per_page( $plugin_list ) {
// Quit immediately if not post edit area.
global $pagenow;
if (( $pagenow == 'post.php' || $pagenow == 'edit.php' )) {
$disable_plugins = array (
// Plugin Name
'hello.php',
'developer/developer.php'
);
$plugins_to_disable = array();
foreach ( $plugin_list as $plugin ) {
if ( true == in_array( $plugin, $disable_plugins ) ) {
//error_log( "Found $plugin in list of active plugins." );
$plugins_to_disable[] = $plugin;
}
}
// If there are plugins to disable then remove them from the list,
// otherwise return the original list.
if ( count( $plugins_to_disable ) ) {
$new_list = array_diff( $plugin_list, $plugins_to_disable );
return $new_list;
}
}
return $plugin_list;
}
您可以将 $ disable_plugins 替换为需要禁用的插件列表。