如何在WordPress多站点管理插件列表中隐藏插件

时间:2014-08-05 作者:Hardeep Asrani

我使用以下代码段从插件列表中隐藏插件:

function hide_plugin_trickspanda() {
  global $wp_list_table;
  $hidearr = array(\'plugin-directory/plugin-file.php\');
  $myplugins = $wp_list_table->items;
  foreach ($myplugins as $key => $val) {
    if (in_array($key,$hidearr)) {
      unset($wp_list_table->items[$key]);
    }
  }
}

add_action(\'pre_current_active_plugins\', \'hide_plugin_trickspanda\');
这是可行的,但当我在WordPress MS上使用它时,它适用于所有站点,但网络管理员除外。

我发现网络管理员使用active_sitewide_plugins 钩住这个任务,但我找不到任何真正的方法来完成它。

根据this site:

仅供参考=>我开发的插件出现了一个错误,最终在WordPress内部徘徊,尤其是WordPress multisite。

WordPress single site有一个site get\\u选项“active\\u plugins”。对于WP multisite,它有get\\u site\\u选项“active\\u sitewide\\u plugins”。问题是,单个站点使用一个数组,其中的数字表示插件的加载顺序。像这样:

[0]=>你好,多莉/你好。php

另一方面,WP multisite使用一个关联数组,以插件名称作为键,以某个整数作为值。像这样:

[你好dolly/hello.php]=>1369572703

更广泛的问题是操纵插件的加载顺序。一旦我理解了数组类型的不同,我就添加了一个is\\u multisite()条件并适当地操作了数组。当我找到阵列类型不同的原因时,我会让您知道。

有什么想法吗?

1 个回复
最合适的回答,由SO网友:Pat J 整理而成

有一个过滤器叫做all_plugins 这似乎对我起到了作用:

add_filter( \'all_plugins\', \'wpse156903_hide_plugins\' );
function wpse156903_hide_plugins( (array) $plugins ) {

    // let\'s hide akismet
    if( in_array( \'akismet/akismet.php\', array_keys( $plugins ) ) ) {
        unset( $plugins[\'akismet/akismet.php\'] );
    }

    // hide multiple plugins
    $hidearr = array(
        \'plugin1/plugin-file.php\',
        \'plugin2/plugin-file2.php\',
        // and so on
    );
    foreach( $hidearr as $hide_me ) {
        if( in_array( $hide_me, array_keys( $plugins ) ) ) {
            unset( $plugins[$hide_me] );
        }
    }
    return $plugins;
}
你当然会替换akismet/akismet.php 插件文件的路径。(我选择Akismet是因为它是我网站列表中的第一个插件。)

此函数在Network > PluginsSite > Plugins 列表。

结束

相关推荐

Multisite and plugins options

我需要更多关于get_site_option(), update_site_option() 和add_site_option().在codex中,他们说它与单次安装相同,只是在多站点中,它返回网络范围的选项。好吧,但我对这一点感到困惑:这是否意味着一旦设置了网络范围选项,所有站点的选项都是相同的?还是每个站点都会覆盖它?我的意思是如果我这样做: update_site_option(\'option_group\', \'default_options());// default_options() r