我想列出特定角色的下拉列表,并为每个角色名称提供一个值。
目前,我可以显示所有角色,但不能显示在下拉列表中,我想删除默认角色。
编辑
<?php if ( ! function_exists( 'get_editable_roles' ) ) {
require_once ABSPATH . 'wp-admin/includes/user.php';
}
?>
<select id="soflow" name="roles">
<?php $roles = get_editable_roles();
foreach ($roles as $key => $value) {
echo '<option value=".$value->name.">'.$value->name.'</option>'; }
?>
</select>
这个人甚至没有返回我在哪里弄错的角色名称?
答案 0 :(得分:0)
您可以创建自定义函数并调用functions.php文件。代码在下面提到,
<?php
function getUsersByRole($role,$name,$selected = '',$extra = '') {
global $wpdb;
$wp_user_search = new WP_User_Query(array("role"=> $role));
$role_data = $wp_user_search->get_results();
foreach($role_data as $item){
$role_data_ids[] = $item->ID;
}
$ids = implode(',', $role_data_ids);
$r = $wpdb->get_results("SELECT * from ".$wpdb->prefix . "users where id IN(".$ids .")", ARRAY_A);
$content .='<select name="'.$name.'" id="'.$name.'" '.$extra.'>';
if($selected == ''){
$content .='<option value="" selected="selected">Choose a user</option>';
}else{
$r_user = $wpdb->get_results("SELECT * from ".$wpdb->prefix . "users where ID = ".$selected."", ARRAY_A);
$content .='<option value="'.$selected.'" selected="selected">'.stripslashes($r_user[0]['display_name']).'</option>';
}
for($i=0; $i<count($r); $i++){
$content .='<option value="'.$r[$i]['ID'].'">'.stripslashes($r[$i]['display_name']).'</option>';
}
$content .='</select>';
return $content;
}
?>
现在,您可以将此功能放在.php文件的页面或自定义页面上
echo getUsersByRole('subscriber','user_id', $r[0]['user_id'],'onchange="dosomething()"');
// or just use which will not set a default selected user or any extra attributes
echo getUsersByRole('subscriber','user_id');
谢谢!!
答案 1 :(得分:0)
如果我对您的理解正确,那么您需要这样做:
<?php if ( ! function_exists( 'get_editable_roles' ) ) {
require_once ABSPATH . 'wp-admin/includes/user.php';
}
?>
<select id="soflow" name="roles">
<?php
foreach (get_editable_roles() as $role_name => $role_info) {
echo '<option vlaue=".role_name.">'.role_name.'</option>'
}
?>
</select>
,您可以使用CSS设置样式:
select#soflow {
-webkit-appearance: button;
-webkit-border-radius: 2px;
-webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1);
-webkit-padding-end: 20px;
-webkit-padding-start: 2px;
-webkit-user-select: none;
background-image: url(http://i62.tinypic.com/15xvbd5.png), -webkit-linear-gradient(#FAFAFA, #F4F4F4 40%, #E5E5E5);
background-position: 97% center;
background-repeat: no-repeat;
border: 1px solid #AAA;
color: #555;
font-size: inherit;
margin: 20px;
overflow: hidden;
padding: 5px 10px;
text-overflow: ellipsis;
white-space: nowrap;
width: 300px;
}
答案 2 :(得分:0)
现在有了这段代码,我不仅获得了角色列表,而且还获得了数组
<select id="soflow" name="roles">
<?php $roles_name = get_editable_roles();
foreach ($roles_names as $roles) {
foreach ($roles as $value->name) {
echo '<option value=".$value>name.">' . $value->name . '</option>';
}
}?>
</select>
答案 3 :(得分:0)
这是答案。
<select id="roles" name="roles" class="fre-chosen-single">
<?php
foreach (get_editable_roles() as $role_name => $role_info) {
echo '<option value="'.$role_name.'">' . $role_info['name'] . '</option>';
}?>
</select>
如何过滤角色? 并可以为角色添加子弹吗?