2014-03-19 3 views
2

내 플러그인 중 하나에 대해서는 플러그인 옵션에 multiselect를 추가해야하지만 multiselect의 옵션은 동적입니다 (지정된 사이트의 사용자 역할에서 자동 생성 됨). 위의 배열에WordPress Plugin 설정의 동적 배열 옵션 클래스

'choices' => array(
    'op1' => 'Option 1', 
    'op2' => 'Option 2', 
), 

을,하지만 난 내 선택 상자에서처럼 나는, 동적으로 생성해야합니다

$this->settings['manageraccess'] = array(
     'section' => 'manager', 
     'title' => __('Manager Mode Access'), 
     'desc' => __(''), 
     'type' => 'manageraccess', 
     'std'  => '', 
     'dflt' => '', 
     'helplink'=> 'yes', 
     'submit' => 'yes'     
    ); 

일반적으로 나는 추가합니다. 내 필드는 다음과 같습니다.

 case 'manageraccess': 
      global $wp_roles; 
      $all_roles = $wp_roles->roles; 
      $editable_roles = apply_filters('editable_roles', $all_roles); 
      echo '<select multiple="multiple" class="select chozed-select' . $field_class . '" name="myplugin_options[' . $id . '][]" data-placeholder="&nbsp;">'; 
      foreach($editable_roles as $role=>$theroles){ 
       echo '<option value="' . esc_attr($role) . '" '.selected($options[$id], $role, false) . '>'.$wp_roles->role_names[$role].'</option>'; 
      } 
      echo '</select>' . $helplink; 
      if ($desc != '') 
      echo '<br /><div class="ssfa-description">' . $desc . '</div>'; 
      if ($submit != null) 
      echo '<br /><br /><br />'.$submit;     
     break;   

답변

2

글쎄요.

public function get_settings(){ 
    global $wp_roles; 

    $this->settings['managertest'] = array(
     'section' => 'manager', 
     'title' => __('Manager Mode Access'), 
     'desc' => __(''), 
     'type' => 'multi_select', 
     'std'  => '', 
     'dflt' => '', 
     'choices' => $wp_roles->role_names, 
     'helplink'=> 'yes', 
     'submit' => 'yes'     
    );