为特定的用户角色禁用wordpress插件



我试图停用所有用户角色的(TeraWallet)插件,只允许订阅者角色。

我使用以下代码来停用客户角色的插件:

function desactivate_plugin_wallet()
{
global $current_user;
if (in_array('customer', $current_user->roles)) {
deactivate_plugins('/woo-wallet/woo-wallet.php');
} else {
activate_plugins('/woo-wallet/woo-wallet.php');
}
}
add_action('admin_init', 'desactivate_plugin_wallet');

我应用代码来激活主题dfunction.php文件。

但是代码不工作

提前感谢一位伟大的资深开发人员解决了这个问题。

当我从我的端测试,它的工作完美,我的测试代码示例是:

function desactivate_plugin_wallet()
{
$myplugin = 'woo-wallet/woo-wallet.php';
if (current_user_can( 'administrator' )) {
activate_plugins($myplugin);
} else {
deactivate_plugins($myplugin);
}
}
add_action('admin_init', 'desactivate_plugin_wallet', 10, 2);
add_action('admin_init', 'my_filter_the_plugins');    
function my_filter_the_plugins()
{
global $current_user;
if (in_array('customer', $current_user->roles)) {
deactivate_plugins( // deactivate for media_manager
array(
'/woo-wallet/woo-wallet.php'
),
true, // silent mode (no deactivation hooks fired)
false // network wide
);
} else { // activate for those than can use it
activate_plugins(
array(
'/woo-wallet/woo-wallet.php'
),
'', // redirect url, does not matter (default is '')
false, // network wise
true // silent mode (no activation hooks fired)
);
}
}

基本上是这样的:

对于客户用户组my_filter_the_plugins禁用(静默)插件。然后,我们需要为那些不在customer用户组中的用户重新激活插件(还是静默的)。

add_filter('woo_wallet_form_cart_cashback_amount', 'woo_wallet_form_cart_cashback_amount_callback');
if (!function_exists('woo_wallet_form_cart_cashback_amount_callback')) {
function woo_wallet_form_cart_cashback_amount_callback($cashback_amount) {
$user = wp_get_current_user();
if (in_array('customer', (array) $user->roles)) {
$cashback_amount = 0;
}
return $cashback_amount;
}
}

这个适合我。

最新更新