如何在Wordpress后端上禁用特定插件/编辑产品页面

时间:2019-08-19 14:05:45

标签: wordpress woocommerce

我试图找到一种解决方案来禁用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产品页面时加载该插件。

我们将不胜感激。

1 个答案:

答案 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 替换为需要禁用的插件列表。