强制仅从多站点网络仪表板激活插件

时间:2017-02-20 作者:T.Todua

是否有一种方法允许插件仅从网络仪表板激活(如果使用多站点)。

在非多站点中,允许正常激活。

1 个回复
SO网友:Pat J

您可以在插件的标题信息中指定插件仅为网络插件。

/*
Plugin Name: Name of Plugin
Plugin URI: Link to plugin information
Description: Plugin Description
[...]
Network: Optional. Specify "Network: true" to require that a plugin is activated
       across all sites in an installation. This will prevent a plugin from being
       activated on a single site when Multisite is enabled.
*/
请参见get_plugin_data().

Network: true 在非多站点中,插件将允许插件工作(对本地安装的快速测试证实了这一点)。

您也可以尝试使用all_plugins 如果您的站点是多站点安装,并且用户不在网络管理屏幕中,请筛选以从插件列表中隐藏它:

add_filter( \'all_plugins\', \'wpse257256_hide_my_plugin\' );
function wpse257256_hide_my_plugin( $plugins ) {
    if ( is_multisite() && ! is_network_admin() ) {
        unset( $plugins[\'my-plugin-name/my-plugin-file.php\'] );
    }
    return $plugins;
}
参考文献all_plugins filter
  • is_multisite()
  • is_network_admin()