显然,没有办法从必须使用列表中删除一个插件。。。
但后来,发现了一个性能更好的过滤器:
show_advanced_plugins
将完全隐藏必须使用的插件。
毕竟,如果你想隐藏这种性质的东西,那么就把它全部隐藏起来。。。
在教室里WP_Plugins_List_Table
并接受两个参数:布尔值和插件类型(mustuse
和dropins
).
检查this article 供MU和specially 访问。但是,为了wiki的缘故,我将在这个答案的末尾发布DI表。
<小时>Update:
-mu-plugin
更新为多个用户和多个隐藏插件,现在是字符串,它是数组
为了测试这个过程,我们需要一个插件。创建名为db.php
在root 并复制以下内容:
<?php
/*
Plugin Name: Just for testing Drop-ins
Version: 0.1
Author: WPSE-53866
Author URI: http://wordpress.stackexchange.com/
*/
必须使用插件
mu-plugins
文件夹,并设置类的参数。
<?php
/*
Plugin Name: Hide Must-Use and Drop-ins from the Plugins listing
Plugin URI: http://wordpress.stackexchange.com/questions/53866
Description: Used to hide the Must-Use and Drop-ins plugins from all users except one. Also can hide a selected plugin from the regular list, be it active or not.
Version: 1.1
Author: brasofilo
AuthorURI: http://wordpress.stackexchange.com/users/12615/
*/
/**
* Parameters of the class - sorry for the non-standard documentation
*
* @super_admin : array (required) : the users which are able to see everything
* @can_see_mustuse : boolean (required) : can other users see the Must-Use list?
* @can_see_dropins : boolean (required) : can other users see the Drop-ins list?
* @hide_this_one : array (optional) : plugins to hide in the regular listing
*
* Reference article for Must-Use and Drop-ins
* http://hakre.wordpress.com/2010/05/01/must-use-and-drop-ins-plugins/
*/
add_action(\'admin_init\', \'wpse_53866_fire_plugin\');
function wpse_53866_fire_plugin()
{
global $pagenow;
if( \'plugins.php\' != $pagenow)
return;
$wpse53866_HideAdvancedPlugins_instance = new Wpse53866_HideAdvancedPlugins(
array(
\'super_admin\' => array(\'Rodolfo\',\'roda\'),
\'can_see_mustuse\' => false,
\'can_see_dropins\' => true,
\'hide_this_ones\' => array( \'set-user-locale.php\', \'akismet/akismet.php\' )
)
);
}
class Wpse53866_HideAdvancedPlugins
{
public function __construct($data)
{
$this->user = $data[\'super_admin\'];
$this->mustuse = $data[\'can_see_mustuse\'];
$this->dropins = $data[\'can_see_dropins\'];
$this->hide = isset( $data[\'hide_this_ones\'] ) ? $data[\'hide_this_ones\'] : false;
if($this->hide)
add_filter( \'all_plugins\', array(&$this, \'on_list_plugins\' ) );
add_filter( \'show_advanced_plugins\', array(&$this, \'on_list_advanced\' ), 10, 2 );
}
public function on_list_plugins($plugins)
{
global $current_user;
if( ! in_array( $current_user->user_login, $this->user ) )
{
foreach( $this->hide as $plug )
unset( $plugins[$plug] );
}
return $plugins;
}
public function on_list_advanced($show, $type)
{
global $current_user;
if( ! in_array( $current_user->user_login, $this->user ) )
{
if( \'mustuse\' == $type )
return $this->mustuse;
if( \'dropins\' == $type )
return $this->dropins;
}
return true;
}
}
参考
hakre on wordpress