Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从特定用户角色的电子商务订阅仪表板中删除操作按钮_Php_Wordpress_Woocommerce_Admin_Woocommerce Subscriptions - Fatal编程技术网

Php 从特定用户角色的电子商务订阅仪表板中删除操作按钮

Php 从特定用户角色的电子商务订阅仪表板中删除操作按钮,php,wordpress,woocommerce,admin,woocommerce-subscriptions,Php,Wordpress,Woocommerce,Admin,Woocommerce Subscriptions,我正在寻找一个虚拟助手来帮助管理支持票证。此虚拟助理需要对有限的商业领域(订阅)具有读取权限 我正在使用“用户角色编辑器”删除所有不需要的功能。不幸的是,只有一个功能(编辑车间订单)可以访问我不希望代理访问的功能。我被迫赋予代理访问后端订阅菜单的能力 我想做什么: function change_va_support_role(){ global $wp_roles; $wp_roles->remove_cap( 'va_support', 'suspend_subscr

我正在寻找一个虚拟助手来帮助管理支持票证。此虚拟助理需要对有限的商业领域(订阅)具有读取权限

我正在使用“用户角色编辑器”删除所有不需要的功能。不幸的是,只有一个功能(编辑车间订单)可以访问我不希望代理访问的功能。我被迫赋予代理访问后端订阅菜单的能力


我想做什么:

function change_va_support_role(){
    global $wp_roles;
    $wp_roles->remove_cap( 'va_support', 'suspend_subscriptions' );
    $wp_roles->remove_cap( 'va_support', 'cancel_subscriptions' );

}
add_action('init', 'change_va_support_role');
从特定用户角色中删除“挂起”和“取消”按钮访问权限(va_支持)



我的当前代码(不工作):

function change_va_support_role(){
    global $wp_roles;
    $wp_roles->remove_cap( 'va_support', 'suspend_subscriptions' );
    $wp_roles->remove_cap( 'va_support', 'cancel_subscriptions' );

}
add_action('init', 'change_va_support_role');
我假设我输入了不正确的功能,但我似乎在任何地方都找不到它们。

我知道我可能可以很容易地用CSS隐藏这些按钮,但这是可以颠倒的,不会依赖于用户角色。如果有,我愿意用另一种方式解决这个问题

到目前为止,没有处理此操作触发器的筛选器。您可以自行添加一个过滤器来处理此问题

/woocommerce subscriptions/includes/admin/class-wcs-admin-post-types.php在该函数的第330行附近-
公共函数parse\u bulk\u actions()

在主题中,您可以检查当前用户是否具有角色,然后相应地返回true/false。您可能知道,在更新插件时,更改将丢失。但就检查代码而言,在触发这些函数之前没有过滤器

add_filter( 'wcs_can_change_subscription_status', 'alter_can_change_subscription_status' );

function alter_can_change_subscription_status( $can_change_status ) {

    $user = wp_get_current_user();
    if ( in_array( 'va_support', (array) $user->roles ) ) {
        //The user has the "va_support" role
        return false;
    }
    return  $can_change_status;
}

使用Javascript/jQuery,以下操作将从状态列中删除订阅管理仪表板上特定用户角色的所有“悬停”操作按钮:

add_action( 'admin_footer', 'admin_dashboard_subscriptions_filter_callback' );
function admin_dashboard_subscriptions_filter_callback() {
    global $pagenow, $post_type;

    $targeted_user_role = 'va_support'; // <== Your defined user role slug

    // Targeting subscriptions admin dashboard for specific user role
    if( $pagenow === 'edit.php' && $post_type === 'shop_subscription' 
    && current_user_can( $targeted_user_role ) ) :
    ?>
    <script>
    jQuery(function($){
        $('td.column-status > div.row-actions').each(function() {
            $(this).remove();
        });
    });
    </script>
    <?php
    endif;
}
add_操作('admin_footer'、'admin_dashboard\u subscriptions\u filter\u callback');
函数管理\仪表板\订阅\过滤器\回调(){
全局$pagenow,$post_类型;
$targeted_user_role='va_support';//
jQuery(函数($){
$('td.column-status>div.row-actions')。每个(函数(){
$(this.remove();
});
});

您好,谢谢您的输入!我刚刚测试了您的代码,将其放在“public function parse_bulk_actions()下”“。然后我在“用户角色编辑器”中添加了“can_change_status”作为自定义功能,并未选中它。不幸的是,我没有看到任何更改!我做错了什么吗?@cactusboat-在functions.phpHey@mujuonly中添加第二个代码段,我刚刚尝试过,但似乎仍然不起作用:(非常感谢你花时间回答我的问题!@cactusboat-如果过滤器功能正常,请尝试在开始时返回false。然后你可以确认问题是角色检查,否则问题是文件中添加的代码的位置。在第一个代码中,我将true替换为false,但没有正在重新定位。我还尝试在“public function parse_bulk_actions()”中重新定位。没有任何更改,VA支持仍然可以看到cancel/SuspendAzing,非常有效!感谢您抽出时间回答。如果在不久的将来我需要更大项目的帮助,我将联系:-(ps我不能再给您19小时的奖金)这将只隐藏操作链接。如果有人直接访问该链接,它将起作用:)不能说我会在紧要关头犹豫使用这个解决方案,但这是一种欺骗;@CKMacLeod有时欺骗总比没有强:)嗨@LoicTheAztec我试图通过你个人资料中的“联系我”链接与你联系,不确定你是否收到了我的消息?