Tôi nghĩ rằng đây có thể là vấn đề với PHP của tôi hơn là việc tôi sử dụng API cài đặt, nhưng dường như tôi không thể có được Wordpress để lưu một mảng dữ liệu cho hộp đa lựa chọn.
Hộp đa lựa chọn tương ứng với trường meta tùy chỉnh và các tùy chọn chọn là loại bài đăng tùy chỉnh sẽ hiển thị trường meta đó.
Đây là mã hiển thị:
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
được định nghĩa ở đây là 'sự lựa chọn':
$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" )
);
Và mã xác nhận:
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;
Hiện tại, nếu tôi chọn nhiều hơn một giá trị từ trường nhiều lựa chọn, WP sẽ chỉ lưu một giá trị (thường là giá trị bảng chữ cái đầu tiên). Tôi cần nó để lưu nhiều hơn một giá trị trong mảng.
Tôi nghĩ rằng thêm []
vào cuối của [$id]
có thể giúp đỡ, nhưng không.
$id
giống như "id" => BUDDHA_SHORTNAME . "_meta_email"
, nó được định nghĩa trong một chức năng khác. Và tôi không thực sự biết tại sao tôi làm print_r
ở đó, không có ý nghĩa gì phải không?
[]
ở cuối name
thuộc tính đã giúp tôi. Kiểm tra lại thuộc tính tên. Bạn có kiểm tra db myQuery cài đặt nào được lưu trữ không?
esc_html()
và esc_html__()
trong mã hiển thị của bạn. Các cựu chỉ chấp nhận một đối số; cái sau chấp nhận một đối số thứ hai, miền văn bản.
$id
? Và tại sao đang sử dụngprint_r
trong một bối cảnh gán?