मैं सोच रहा हूं कि सेटिंग्स एपीआई के मेरे उपयोग के बजाय मेरे 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वहाँ क्यों किया , इसका कोई मतलब नहीं है?
[]के अंत में Addin nameने मेरी मदद की। नाम विशेषता को दोबारा जांचें। क्या आप mySQL db की जाँच करते हैं कि कौन सी सेटिंग्स संग्रहीत हैं?
esc_html()और esc_html__()आपके प्रदर्शन कोड में हैं। पूर्व केवल एक तर्क को स्वीकार करता है; बाद वाला दूसरा तर्क, पाठ डोमेन स्वीकार करता है।
$id? औरprint_rएक असाइन संदर्भ में क्यों उपयोग कर रहे हैं ?