我正在为一个新的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 } ?>