0

我正在尝试将所有可能的功能放入下拉列表中。我是新手,所以请放轻松。我目前所拥有的丝毫没有工作:

$user = get_user_by('id', '1');
$capslist = $user->allcaps; 
$dropdown = '<select>';
foreach($capslist as $cap){
$dropdown .= '<option value="'.$cap.'">'.$cap.'</option>';
}
$dropdown .= '</select>';
return $dropdown;

编辑 -

我将其设为简码只是为了快速测试:

add_shortcode('capsdropdown', 'sc_capsdropdown');
function sc_capsdropdown($attr) {
$user = get_user_by('id', '1');
$capslist = $user->allcaps; 
$dropdown = '<select>';
foreach($capslist as $cap){
$dropdown .= '<option value="'.$cap.'">'.$cap.'</option>';
}
$dropdown .= '</select>';
return $dropdown;
}

它确实创建了一个下拉列表。问题是,它是布尔值。都是1s。有什么方法可以让它返回实际的上限名称?

-- 编辑:这很奇怪,因为 vardump($user->allcaps); 返回实际值,而不是布尔值。我尝试使用 settype 但它不影响输出。

4

1 回答 1

2
foreach($capslist as $k=>$cap){
    $dropdown .= '<option value="'.$k.'">'.$k.'</option>';
}

我的猜测是数组的结构。每个 Array Key 都是功能的实际名称,其值是一个简单的布尔值,用于确定给定用户实例是否有权执行该给定操作。

您正在按名称搜索功能,并且由于您在输出中只看到 1,因此我认为您要查找的内容在键中。

于 2013-10-05T03:02:50.440 回答