विकल्प पृष्ठ में चेकबॉक्स और रेडियो बटन का उपयोग कैसे करें?


16

मुझे बेवकूफ कहो लेकिन मुझे पता नहीं है कि यह कैसे करना है। पाठ इनपुट के लिए मैं सिर्फ:

<input type="text" name="option_name"  value="<?php echo get_option( 'option_name' ); ?>" />

और फिर इसे काम करने के तरीके में प्रयोग करके हुक करें register_setting()। मैं तब इसके मूल्य प्राप्त कर सकता था get_option('option_name')। चेकबॉक्स और रेडियो बटन के साथ मुझे कैसे करना चाहिए?

जवाबों:


25

मैं एक सरणी के रूप में कई विकल्पों को संग्रहीत करता हूं, इसलिए मुझे ऐसा कुछ करना होगा ..

<?php $options = get_option( 'myoption' ); ?>
<input type="checkbox" name="myoption[option_one]" value="1"<?php checked( 1 == $options['option_one'] ); ?> />
<input type="checkbox" name="myoption[option_two]" value="1"<?php checked( 1 == $options['option_two'] ); ?> />

हालाँकि, यह निर्भर करता है कि कॉलबैक फ़ंक्शन जो आने वाले डेटा सौदों को सहेजे गए मूल्य से बचाता है (जिस कॉलबैक को आपको तीसरे पैरामीटर के रूप में परिभाषित किया जाना चाहिएregister_setting )। व्यक्तिगत रूप से जब मैं चेकबॉक्स से निपटता हूं तो मैं सरणी कुंजी सेट नहीं करता, जहां अन्य लोग 0 को कुंजी सेट करने का विकल्प चुन सकते हैं (या इसके बजाय जो भी हो) ...

तो मेरा कोड वास्तव में इस तरह दिखता है ..

<?php $options = get_option( 'myoption' ); ?>
<input type="checkbox" name="myoption[option_one]" value="1"<?php checked( isset( $options['option_one'] ) ); ?> />
<input type="checkbox" name="myoption[option_two]" value="1"<?php checked( isset( $options['option_two'] ) ); ?> />

अगर मैं केवल चेकबॉक्स के साथ काम कर रहा हूं तो मेरा स्वच्छता कॉलबैक कुछ लाइनों के साथ दिखेगा।

public function on_option_save( $options ) {
    if( !is_array( $options ) || empty( $options ) || ( false === $options ) )
        return array();

    $valid_names = array_keys( $this->defaults );
    $clean_options = array();

    foreach( $valid_names as $option_name ) {
        if( isset( $options[$option_name] ) && ( 1 == $options[$option_name] ) )
            $clean_options[$option_name] = 1;
        continue;
    }
    unset( $options );
    return $clean_options;
}

मेरे एक प्लगइन वर्ग (केवल एक चेकबॉक्स विकल्पों के साथ एक प्लगइन) से सीधे रिप्ड, लेकिन यह कोड नहीं है जिसे आप काम करने की उम्मीद कर सकते हैं यदि आप कॉपी करते हैं, तो यह केवल चित्रण के लिए है।

रेडियो के लिए, यदि आप कई चयन का उपयोग नहीं कर रहे हैं तो यह कुछ इस तरह से होता है ।।

<?php $options = get_option( 'my_option' ); ?>
<input type="radio" name="myoption[option_three]" value="value1"<?php checked( 'value1' == $options['option_three'] ); ?> />
<input type="radio" name="myoption[option_three]" value="value2"<?php checked( 'value2' == $options['option_three'] ); ?> />

नोट: यह महत्वपूर्ण है कि कुंजी की जांच करने के लिए बुद्धिमान होना चाहिए, यह मान के खिलाफ तुलना करने से पहले सेट किया गया है (मैंने इसे छोटा रखने के लिए ऊपर से छोड़ दिया है)।

क्या उपरोक्त मदद की? यदि नहीं, तो मुझे बताएं कि क्या स्पष्ट करने की आवश्यकता है ... (या मुझे क्या याद आ रहा है) ।।

उत्तर: checked()

आप पा सकते हैं कि फ़ंक्शन कहाँ परिभाषित है (वर्डप्रेस में)। http://core.trac.wordpress.org/browser/tags/3.0.2/wp-includes/general-template.php#L2228

पहला पैरामीटर मूल रूप से एक सशर्त विवरण है, और दूसरा पैरामीटर (यदि आप इसे परिभाषित करना चाहते हैं) तो इसके खिलाफ जांच करना है। के खिलाफ तुलना करने के लिए डिफ़ॉल्ट मान TRUE है ... इसलिए यदि checked( 1 == 1, true )मैं ऐसा करने के लिए जाँच कर रहा था अगर 1 == 1 सच के बराबर है। अगर सशर्त एक मैच हिट करता है, तो आप checked="checked"वापस आ जाते हैं ।।

नोट: मैं चीजों को समझाने में बकवास कर रहा हूं, इसलिए यदि उपरोक्त को और स्पष्टीकरण की आवश्यकता है तो मैं नाराज नहीं होऊंगा ... बस मुझे बताएं ...;)


मेरा दिमाग इस समय काम नहीं कर रहा है क्योंकि मैं निराश हूं कि मैं अपने दम पर इसका पता नहीं लगा सका। क्या आप बता सकते हैं कि क्या checked( 1 == $options['option_one']करता है? है checked()एक php समारोह क्योंकि मैं इसे मैनुअल में नहीं मिल सका।
जोआन

मैं एक टिप्पणी में व्याख्या नहीं कर सकता, मैं जल्द ही अपना जवाब अपडेट करूंगा, ऊपर देखें ..?)
t31os

आह! मदद के लिए बहुत बहुत धन्यवाद! checked()समारोह में केवल एक ही मैं गूगल के माध्यम से नहीं मिल सका क्योंकि जाहिरा तौर पर यह दर्ज नहीं किया गया है। मुझे "टर्म + वर्डप्रेस" की क्वेरी करते समय मैं वही प्राप्त करने की आदत थी जो मैं चाहता हूं। :-)
जोन डे

स्पष्ट करने के लिए, पहला पैरामीटर चेक करने के लिए है, दूसरा वह है जिसके खिलाफ पहले मूल्य की तुलना करना है ... इसलिए आप उदाहरण के लिए ऐसा कर सकते हैं ... checked( 1, 2 )यह जांचने के लिए कि क्या 1 2 के बराबर है ... जो इसके बाद से कुछ भी नहीं करेगा। funciton को विशिष्ट रूप से चेकबॉक्स या रेडियो बटन के लिए एक चेक किए गए राज्य को आउटपुट करने के लिए डिज़ाइन किया गया है .. किसी भी मामले में, मदद करने के लिए खुश ...;)
t31os 17

33

चेकबॉक्स:

<input name="option_name" type="checkbox" value="1" <?php checked( '1', get_option( 'option_name' ) ); ?> />

रेडियो:

<input name="option_name" type="radio" value="0" <?php checked( '0', get_option( 'option_name' ) ); ?> />
<input name="option_name" type="radio" value="1" <?php checked( '1', get_option( 'option_name' ) ); ?> />

आपके कोड में एक टाइपो है (प्रकार) ..
t31os

1
आपने प्रश्न का सीधा उत्तर दिया, इसलिए आप मुझसे +1 प्राप्त करें ...;)
t31os

3
इसका उत्तर होना चाहिए।

यह बात है! हल किया, उत्तर होना चाहिए।
mircobabini
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.