Bu benim ayarları API benim kullanımı yerine benim PHP ile ilgili bir sorun olabilir düşünüyorum, ama çok seçim kutusu için bir dizi veri kaydetmek için Wordpress alamıyorum görünmüyor.
Çoklu seçim kutusu özel bir meta alana karşılık gelir ve seçim seçenekleri, bu meta alanını görüntüleyecek özel yayın türleridir.
Ekran kodu:
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
burada "seçenekler" olarak tanımlanır:
$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" )
);
Ve doğrulama kodu:
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;
Şu anda, çoklu seçim alanından birden fazla değer seçersem, WP yalnızca bir değer kaydeder (genellikle ilk alfabetik değer). Dizide birden fazla değer kaydetmek gerekiyor.
[]
Sonuna eklemek [$id]
yardımcı olabilir diye düşündüm , ama hayır.
$id
aynıdır "id" => BUDDHA_SHORTNAME . "_meta_email"
, başka bir işlevde tanımladı. Ve neden print_r
orada yaptığımı gerçekten bilmiyorum , pek mantıklı değil mi?
[]
sonunda Addin name
bana yardımcı oldu. Name niteliğini iki kez kontrol edin. MySQL db hangi ayarların saklandığını kontrol ediyor musunuz?
esc_html()
ve esc_html__()
ekran kodunuzda. İlki sadece bir argümanı kabul eder; ikincisi ikinci bir argümanı, metin alanını kabul eder.
$id
? Ve nedenprint_r
atama bağlamında kullanıyorsunuz?