我认为这可能是我的PHP的问题,而不是我使用设置API的问题,但我似乎无法让Wordpress为多选框保存数据数组。
多选框对应一个自定义元字段,选择选项是显示该元字段的自定义帖子类型。
以下是显示代码:
case \'select2\':
echo "<select id=\'$id\' style=\'width:15em;height:10em;\' class=\'select$field_class\' name=\'" . $buddha_option_name . "[$id]\' multiple>";
foreach($choices as $item) {
$item = explode("|",$item);
$item[0] = esc_html($item[0], \'buddha_textdomain\');
$selected = ($options[$id]==$item[1]) ? \'selected="selected"\' : \'\';
echo "<option value=\'$item[1]\' $selected>$item[0]</option>";
}
echo "</select>";
echo ($desc != \'\') ? "<br /><span class=\'description\'>$desc</span>" : "";
break;
$choices
此处定义为“选择”:
$options[] = array(
"section" => "custom_meta",
"id" => BUDDHA_SHORTNAME . "_meta_email",
"title" => __( \'Email Meta Box\', \'buddha_textdomain\' ),
"desc" => __( \'Select post types to have custom email meta box.\', \'buddha_textdomain\' ),
"type" => "select2",
"std" => print_r($buddha_option_name[$id]),
"choices" => array( __(\'Posts\',\'buddha_textdomain\') . "|post", __(\'Pages\',\'buddha_textdomain\') . "|page", __(\'Faculty/Staff\',\'buddha_textdomain\') . "|staff", __(\'FAQ\',\'buddha_textdomain\') . "|faq", __(\'Documents\',\'buddha_textdomain\') . "|docs", __(\'Courses\',\'buddha_textdomain\') . "|courses" )
);
和验证代码:
case \'select2\':
// process $select_values
$select_values = array();
foreach ($option[\'choices\'] as $k => $v) {
// explode the connective
$pieces = explode("|", $v);
$select_values[] = $pieces[1];
}
// check to see if selected value is in our approved array of values!
$valid_input[$option[\'id\']] = (in_array( $input[$option[\'id\']], $select_values) ? $input[$option[\'id\']] : \'\' );
break;
目前,如果我从multi-select字段中选择多个值,WP将只保存一个值(通常是第一个字母值)。我需要它在数组中保存多个值。
我想添加[]
至年底[$id]
可能会有帮助,但不会。