我正在为一个新的wordpress主题开发一个主题设置面板,它有一个选项来排除循环中显示的类别。我设法使主要功能正常工作,使用了一个multilselect框并将值保存为array。。。
<?php $cats = get_categories(\'hide_empty=0&orderby=name\'); ?>
<select name="<?php echo $option[\'id\']; ?>[]" id="<?php echo $option[\'id\']; ?>" multiple="multiple">  
    <option value="0">None (don\'t exclude anything)</option>
    <?php foreach ($cats as $cat_list ) { ?>
        <option value="<?php echo $cat_list->cat_ID; ?>" <?php selected( $selected, $cat_list->cat_ID ); ?>><?php echo $cat_list->cat_name; ?></option> 
    <?php } ?>
</select>
 但是我不明白如何把每一项都登记进去
foreach() 如果其值与存储值数组中的一个值匹配,则循环,然后应用
selected="selected"  如果它返回真值。我明白了
selected() wp函数,但不知道如何在这种情况下使用它(内部有多个值
foreach() 循环)。
任何帮助都将不胜感激,我是n00b,所以如果这是一个愚蠢的问题,请原谅我:)
 
                    最合适的回答,由SO网友:chrisguitarguy 整理而成
                    我假设你$selected 变量包含当前选定项目的值数组?
在这种情况下,您不能使用selected(带有多个选择框),因为它只比较两个字符串。它不会测试该值是否在数组中。相反,使用三元语句和in_array()
<?php 
foreach ($cats as $cat_list ) { 
$selected = in_array( $cat_list->cat_ID, $selected ) ? \' selected="selected" \' : \'\';    
?>
    <option value="<?php echo $cat_list->cat_ID; ?>" <?php echo $selected; ?>><?php echo $cat_list->cat_name; ?></option> 
<?php } ?>