안녕하세요?
우커머스에 연동해서 사용중입니다. Shop Manager 란 역할이 있어서, 이 역할로도 관리자처럼 kboard 관리를 할수 있게 하고 싶습니다.
kboard_class.php 를 수정하고 싶은데 어떻게 하면 될까요?
/kboard/class/KBoard.class.php 파일에 isAdmin() 메소드가 있습니다.
if(@in_array('administrator', $this->userdata->roles) || @in_array('editor', $this->userdata->roles)){
// 최고관리자 허용
return true;
}
이쪽 부분에 role 을 추가해주시는게 좋겠습니다.
아래와 같이 했는데 반응이 없는데 한 번 봐주시겠어요?
public function isAdmin(){
$admin_user = array_map(create_function('$string', 'return trim($string);'), explode(',', $this->admin_user));
if($this->userdata->data->ID){
if(@in_array('administrator', $this->userdata->roles) || @in_array('shop manager', $this->userdata->roles)){
// 최고관리자 허용
return true;
}
else if(@in_array('shop manager', $this->userdata->roles)){
// 샵매니저 허용
return true;
}
else if(@in_array($this->userdata->data->user_login, $admin_user)){
// 선택된 관리자 권한일때, 사용자명과 선택된관리자와 비교후, 일치하면 허용
return true;
}
}
else{
return false;
}
}
shop manager 라는 role이 등록되어 있나요?
정확히 shop manager 라는게 있다면 동작될겁니다.
DB에 등록된대로 shop_manager로 했는데 여전히 안됩니다 ㅜㅜ
어떻게 하면 될까요?
/**
* 관리자인지 확인한다.
* @return boolean
*/
public function isAdmin(){
$admin_user = array_map(create_function('$string', 'return trim($string);'), explode(',', $this->admin_user));
if($this->userdata->data->ID){
if(@in_array('administrator', $this->userdata->roles) || @in_array('editor', $this->userdata->roles)){
// 최고관리자 허용
return true;
}
else if(@in_array('shop_manager', $this->userdata->roles)){
// 샵매니저 허용
return true;
}
else if(@in_array($this->userdata->data->user_login, $admin_user)){
// 선택된 관리자 권한일때, 사용자명과 선택된관리자와 비교후, 일치하면 허용
return true;
}
}
else{
return false;
}
}
다시 확인해보니, 기본 관리자말고는 어떤 역할을 집어넣어도 안됩니다.
editor 도 안되고 모든 역할이 안되는데 확인 부탁드립니다.
else if(@in_array('shop_manager', $this->userdata->roles)){
// 샵매니저 허용
return true;
}
위 코드 대신 아래코드를 추가하면 로그인된 모든 사용자가 관리자 게시글을 관리할 수 있게됩니다.
else if(1){
return true;
}
무슨말이냐 하면.. 이쪽에 role을 추가하거나 프로그램 수정을 해서 true 값을 return 해주면 관리자로 인식을 하게됩니다.
아래 코드를 추가해서 실제로 어떤값이 있는지도 확인해보세요.
print_r($this->userdata->roles);
exit;
editor는 이미 아래처럼 추가되어 있습니다.
if(@in_array('administrator', $this->userdata->roles) || @in_array('editor', $this->userdata->roles)){
// 최고관리자 허용
return true;
}
안녕하세요? 아래처럼 해봤는데 여전히 관리자를 제외한 어떤 사용자도 안됩니다. ㅜㅜ
그리고 print 코드는 어떻게 추가하면 될지 몰라서 못해봤습니다.
하도 답답해서 관리자 외에 플러그인 설치 권한을 준 다른 사용자가 플러그인 화면에서 게시판 추가 메뉴로 들어가면 이 페이지에 접근할 권한이 없습니다. 라고 합니다.
확인부탁드립니다.
/**
* 관리자인지 확인한다.
* @return boolean
*/
public function isAdmin(){
$admin_user = array_map(create_function('$string', 'return trim($string);'), explode(',', $this->admin_user));
if($this->userdata->data->ID){
if(@in_array('administrator', $this->userdata->roles) || @in_array('shop_manager', $this->userdata->roles)){
// 최고관리자 허용
return true;
}
else if(1){
return true;
}
else if(@in_array($this->userdata->data->user_login, $admin_user)){
// 선택된 관리자 권한일때, 사용자명과 선택된관리자와 비교후, 일치하면 허용
return true;
}
}
else{
return false;
}
}
관리자 페이지에서 KBoard를 관리하시려는건가요??
그럼 게시글 관리 부분을 수정하는게 아닙니다;;;
index.php 파일에서 kboard_settings_menu() 함수에보시면 메뉴 추가하는 함수들이 있습니다.
add_menu_page()
add_submenu_page()
이 함수들에도 권한을 변경해주셔야 합니다.
또 kboard_update() 함수 쪽에도 아래와같이 Capability를 체크하고 있습니다.
if(!current_user_can('activate_plugins')) wp_die('KBoard : 관리 권한이 없습니다.');
한부분 수정해서는 어렵겠습니다.
여러 부분을 수정하고 해당 사용자에게 Capability도 추가해주셔야 합니다.