안녕하세요?
우커머스에 연동해서 사용중입니다. Shop Manager 란 역할이 있어서, 이 역할로도 관리자처럼 kboard 관리를 할수 있게 하고 싶습니다.
kboard_class.php 를 수정하고 싶은데 어떻게 하면 될까요?
관리자 페이지에서 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도 추가해주셔야 합니다.
안녕하세요? 아래처럼 해봤는데 여전히 관리자를 제외한 어떤 사용자도 안됩니다. ㅜㅜ
그리고 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;
}
}
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;
}
다시 확인해보니, 기본 관리자말고는 어떤 역할을 집어넣어도 안됩니다.
editor 도 안되고 모든 역할이 안되는데 확인 부탁드립니다.
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;
}
}
shop manager 라는 role이 등록되어 있나요?
정확히 shop manager 라는게 있다면 동작될겁니다.
아래와 같이 했는데 반응이 없는데 한 번 봐주시겠어요?
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;
}
}
/kboard/class/KBoard.class.php 파일에 isAdmin() 메소드가 있습니다.
if(@in_array('administrator', $this->userdata->roles) || @in_array('editor', $this->userdata->roles)){
// 최고관리자 허용
return true;
}
이쪽 부분에 role 을 추가해주시는게 좋겠습니다.