Проверка ввода пользователя на основе роли пользователя - PullRequest
1 голос
/ 22 июня 2019

Мое текстовое поле Wordpress package_id в CPT gd_place должно принимать данные только из конечного списка известных и доверенных значений, которые различаются в зависимости от пользователя, например, role_one может вводить только 1, role_two может вводить только 2, role_tree только 3.

Сначала я написал эту функцию, скрывая поле ввода с помощью css

function safe_package( $data ) {
if( 'gd_place' != $data['post_type'] ){
    return $data;
    //This is for one CPT only
}

$user = wp_get_current_user(); 
if(!is_admin() && !current_user_can('administrator')){
    //Does NOT run in the backend and also takes the admin role into account
    if(current_user_can('role_one')){
    $data['package_id'] = 1;
    return $data;
    }
    else if (current_user_can('role_two')){
    $data['package_id'] = 2;
    return $data;
    }
    else if (current_user_can('role_three')){
    $data['package_id'] = 3;
    return $data;
    }

} else {
    //do nothing new
    return $data;
}

}
add_filter( 'wp_insert_post_data', 'safe_package' );

Но тогда, возможно, было бы более целесообразно просто проверить ввод пользователя (белый список) и update_post_meta ($ post-> ID,'package_id', $ safe_package);

Поскольку параметры для каждой роли пользователя являются конечными, может быть, имеет смысл просто заменить неправильный ввод ... кто-нибудь знаком с проверкой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...