कॉलबैक फ़ंक्शन में add_settings_field () से तर्क कैसे पारित करें?


16

मेरे पास एक फंक्शन है:

add_settings_field( 'contact_phone', 'Contact Phone', 'settings_callback', 'general');

यह काम करता है। इसे settings_callback कहते हैं। ठंडा। मेरे पास जो समस्या है वह यह है: मैं नहीं चाहता कि मैं जो कुछ भी कर रहा हूं, उसके लिए एक कॉलबैक फ़ंक्शन को परिभाषित करूं, यदि मैं कर रहा हूं तो थोड़ा सा सामान बाहर गूंज रहा है।

function settings_callback()
{
    echo '<input id="contact_phone" type="text" class="regular-text" name="contact_phone" />';
}

पृथ्वी पर मुझे ऐसा क्यों करना चाहिए? आईडी, वर्ग, और नाम सभी परम होने चाहिए।

क्या सेटिंग_कॉलबैक फ़ंक्शन के लिए पैरामस पास करने का कोई तरीका नहीं है? मैंने कोर को देखना शुरू किया, यहाँ मिला: http://core.trac.wordpress.org/browser/tags/3.1.3/wp-admin/includes/template.php

..और इस $ wp_settings_fields वैश्विक में भाग गया। यह कहां परिभाषित है?

जवाबों:


24

फ़ंक्शन के लिए घोषणा देखें:

function add_settings_field(
    $id,
    $title,
    $callback,
    $page,
    $section = 'default',
    $args    = array()
) { }

अंतिम पैरामीटर आपके तर्क लेता है और उन्हें कॉलबैक फ़ंक्शन में भेजता है।

मेरे प्लगइन सार्वजनिक संपर्क डेटा से उदाहरण

    foreach ( $this->fields as $type => $desc )
    {
        $handle   = $this->option_name . "_$type";
        $args     = array (
            'label_for' => $handle,
            'type'      => $type
        );
        $callback = array ( $this, 'print_input_field' );

        add_settings_field(
            $handle,
            $desc,
            $callback,
            'general',
            'default',
            $args
        );
    }

फ़ंक्शन print_input_field()को पहले पैरामीटर के रूप में ये तर्क मिलते हैं:

/**
 * Input fields in 'wp-admin/options-general.php'
 *
 * @see    add_contact_fields()
 * @param  array $args Arguments send by add_contact_fields()
 * @return void
 */
public function print_input_field( array $args )
{
    $type   = $args['type'];
    $id     = $args['label_for'];
    $data   = get_option( $this->option_name, array() );
    $value  = $data[ $type ];

    'email' == $type and '' == $value and $value = $this->admin_mail;
    $value  = esc_attr( $value );
    $name   = $this->option_name . '[' . $type . ']';
    $desc   = $this->get_shortcode_help( $type );

    print "<input type='$type' value='$value' name='$name' id='$id'
        class='regular-text code' /> <span class='description'>$desc</span>";
}

ग्लोबल वैरिएबल को छूने की जरूरत नहीं।

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