按用户角色隐藏自定义字段

时间:2018-03-27 作者:Mark Nielsen

我已经尝试阅读了有关此主题的所有问题,并根据需要配置了代码,但似乎无法使其正常工作。这是我现在拥有的代码:

function my_exclude_custom_fields( $protected, $meta_key, $user ) {

    $user = wp_get_current_user();
    if ( in_array( \'udlejer\', (array) $user->roles ) ) {
        if ( in_array( $meta_key, array( \'email\', \'text\' ) ) ) {
            return true;
        }
    }

    return $protected;
}
add_filter( \'is_protected_meta\', \'my_exclude_custom_fields\', 10, 2 );
这没有任何改变。即使我以其他角色登录,而不是udlejer, 我仍然可以在前端看到这些自定义字段。

自定义字段位于WooCommerce创建的产品页面上。那么,我是否需要在代码中包含更多内容?希望你们能帮忙!

1 个回复
SO网友:Marc

您可以使用current_user_can() 函数测试当前用户的角色。我还建议在默认情况下保护自定义字段,并只允许适当的用户访问。

从理论上讲,这样的做法应该奏效:

function my_exclude_custom_fields( $protected, $meta_key) {

    if ( in_array( $meta_key, array( \'email\', \'text\' ) ) ) {
        if ( current_user_can( \'udlejer\' ) ) {
            // meta key is not protected for user role \'udlejer\'
            return false;
        } else {
            // make the meta keys protected by default
            return true;
        }
    }

    return $protected;
}
add_filter( \'is_protected_meta\', \'my_exclude_custom_fields\', 10, 2 );

结束

相关推荐