설정 API를 사용하는 것이 아니라 PHP에서 더 많은 문제가 될 수 있다고 생각하지만 다중 선택 상자에 대한 데이터 배열을 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;
현재 다중 선택 필드에서 둘 이상의 값을 선택하면 WP는 하나의 값 (보통 첫 번째 알파벳 값) 만 저장합니다. 배열에 둘 이상의 값을 저장하려면 필요합니다.
나는 []
끝에 [$id]
도움 이 될 것이라고 생각 했지만 그렇지 않습니다.
$id
와 동일하며 "id" => BUDDHA_SHORTNAME . "_meta_email"
다른 함수에 정의되어 있습니다. 그리고 나는 왜 내가 print_r
거기에서 했는지 알지 못합니다. 별로 이해가되지 않습니까?
작동 시켰습니까? 속성
—
Radek
[]
끝에 추가 기능이 name
도움이되었습니다. 이름 속성을 다시 확인하십시오. 어떤 설정이 저장되어 있는지 mySQL db를 확인합니까?
귀하의 질문에 관련없는 : 당신이 혼란 한 생각
—
Pat J
esc_html()
과 esc_html__()
디스플레이 코드. 전자는 하나의 주장 만 받아들입니다. 후자는 텍스트 도메인이라는 두 번째 인수를 허용합니다.
$id
?print_r
할당 컨텍스트에서 왜 사용 하고 있습니까?