我尝试创建一个主题选项页面(从themeshaper中的一个示例主题选项页面开始),我想检查以逗号分隔的类别列表是否有效。删除重复项,删除不存在的类别,但不起作用:(
如果我用empty()检查,则删除最后一个值:
function theme_options_validate( $input ) {
if ($input[\'slidercats\'] != \'\') {
$slidercats = $input[\'slidercats\'];
$slidercats_array = explode( \',\', $slidercats );
$slidercats_array = array_unique( $slidercats_array );
$slidercats_array = array_map(\'intval\', $slidercats_array );
foreach($slidercats_array AS $i => $value)
{
$cat = get_category($i); // cat_ID
if ( empty( $cat ) )
unset($slidercats_array[$i]);
}
$input[\'slidercats\'] = implode(",", $slidercats_array);
}
return $input;
}
它删除了所有值,只有一个term_exists(id, \'category\');
function theme_options_validate( $input ) {
// global $select_options, $radio_options;
// Change to integer
$input[\'slidercount\'] = (int)$input[\'slidercount\'];
if ($input[\'slidercount\'] < 1 || $input[\'slidercount\'] > 50)
$input[\'slidercount\'] = 10;
// Make array from string, remove duplicates, change all values to integer, remove non existing categories, make string from array
if ($input[\'slidercats\'] != \'\') {
$slidercats = $input[\'slidercats\'];
$slidercats_array = explode( \',\', $slidercats );
$slidercats_array = array_unique( $slidercats_array );
$slidercats_array = array_map(\'intval\', $slidercats_array );
foreach($slidercats_array AS $i => $value)
{
$cat = term_exists($i, \'category\'); // cat_ID
if ( ! $cat )
unset($slidercats_array[$i]);
}
$input[\'slidercats\'] = implode(",", $slidercats_array);
}
return $input;
}
问题是foreach
, 但我被困住了,没有php专家。也许有人能给我一个解决这个问题的提示。。。