Không cho phép người dùng chỉnh sửa thông tin hồ sơ của riêng họ


8

Tôi hiện đang phát triển mạng nội bộ và tôi đang sử dụng plugin Thành viên của Justin Tadlock để kiểm soát vai trò và khả năng.

Tôi đã tạo một HRvai trò để cho phép nhân viên phòng Nhân sự tạo và chỉnh sửa tài khoản người dùng. Tất cả nhân viên được tạo ra trong WP đều được giao contributorvai trò với một vài thành viên được chọn editoradministratorvai trò.

Điều tôi muốn là ngăn nhân viên đăng nhập và thay đổi thông tin hồ sơ của chính họ. Chỉ nhân viên của HRvai trò mới có thể chỉnh sửa thông tin hồ sơ.

Câu trả lời:


8

câu trả lời tuyệt vời, để tiến thêm một bước này và cho bất kỳ ai muốn áp dụng điều này cho tất cả người dùng không phải là quản trị viên (ví dụ: người đóng góp, biên tập viên, v.v.)

// ===== remove edit profile link from admin bar and side menu and kill profile page if not an admin
if( !current_user_can('activate_plugins') ) {
function mytheme_admin_bar_render() {
    global $wp_admin_bar;
    $wp_admin_bar->remove_menu('edit-profile', 'user-actions');
}
add_action( 'wp_before_admin_bar_render', 'mytheme_admin_bar_render' );

function stop_access_profile() {
    if(IS_PROFILE_PAGE === true) {
        wp_die( 'Please contact your administrator to have your profile information changed.' );
    }
    remove_menu_page( 'profile.php' );
    remove_submenu_page( 'users.php', 'profile.php' );
}
add_action( 'admin_init', 'stop_access_profile' );
}

5

Làm việc với một chút thời gian. Đây là mã tôi đang sử dụng:

<?php
/*
Plugin Name: Restrict User Editing Own Profile
Plugin URI: http://www.philosophydesign.com
Description: Restricts users from editing their own profile information.
Author: Scott Cariss
Version: 0.1
Author URI: http://www.philosophydesign.com/scott-cariss.html
*/

add_action( 'admin_menu', 'stop_access_profile' );
function stop_access_profile() {
    remove_menu_page( 'profile.php' );
    remove_submenu_page( 'users.php', 'profile.php' );
    if(IS_PROFILE_PAGE === true) {
        wp_die( 'You are not permitted to change your own profile information. Please contact a member of HR to have your profile information changed.' );
    }
}
?>

Đoạn mã trên ngăn mọi người chỉnh sửa thông tin hồ sơ của chính họ mặc dù họ là ai. Những người có khả năng tạo và chỉnh sửa sử dụng vẫn có thể làm như vậy nhưng không thể thay đổi chính họ.


5

Giải pháp như một Plugin (MU-)

Tôi đã kiểm tra tất cả các giải pháp được cung cấp và nghĩ rằng tôi có thể tạo ra một MU-Plugin đẹp từ nó. Sự thay đổi thực sự duy nhất là nó tránh được

<?php
! defined( 'ABSPATH' ) AND exit;
/**
 * Plugin Name: Disable profile page link
 * Description: Remove edit profile link from admin bar and side menu and kill profile page if user isn't an administrator.
 */
# Version: 2012-09-15.2245

function oxo_stop_access_profile()
{
    // Remove AdminBar Link
    if ( 
        'wp_before_admin_bar_render' === current_filter()
        AND ! current_user_can( 'manage_options' )
    )
        return $GLOBALS['wp_admin_bar']->remove_menu( 'edit-profile', 'user-actions' );

    // Remove (sub)menu items
    remove_menu_page( 'profile.php' );
    remove_submenu_page( 'users.php', 'profile.php' );

    // Deny access to the profile page and redirect upon try
    if ( 
        defined( 'IS_PROFILE_PAGE' )
        AND IS_PROFILE_PAGE
        AND ! current_user_can( 'manage_options' )
        )
    {
        wp_redirect( admin_url() );
        exit;
    }
}
add_action( 'wp_before_admin_bar_render', 'oxo_stop_access_profile' );
add_action( 'admin_menu', 'oxo_stop_access_profile' );

2

Tất cả các giải pháp trên đều sử dụng hằng số: IS_PROFILE_PAGE

if( IS_PROFILE_PAGE === true ) {

Nhưng, nếu gỡ lỗi wordpress được đặt thành true, nó sẽ đưa ra lỗi "hằng số không xác định". Để sửa chữa nó :

if( defined('IS_PROFILE_PAGE') && IS_PROFILE_PAGE === true ){
........................
}

0
add_action( 'admin_menu', 'prefix_disable_profile_access' );
function prefix_disable_profile_access() {
    if( ! current_user_can('editor') || ! current_user_can('administrator') ) { // You can add the user roles who can edit their profiles here.
        remove_menu_page( 'profile.php' );
        remove_submenu_page( 'users.php', 'profile.php' );
        if ( true === IS_PROFILE_PAGE ) {
            wp_die( 'You are not permitted to change your own profile information. Please contact a member of HR to have your profile information changed.' );
        }
    }
}

Hy vọng điều này sẽ giúp một số người.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.