অ্যাড_সেটিং_ফিল্ড () থেকে কলব্যাক ফাংশনে আর্গুমেন্ট কীভাবে পাস করবেন?


16

আমার এই মত একটি ফাংশন আছে:

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

ওই কাজগুলো. এটি সেটিংস_ক্যালব্যাক কল করে। কুল। আমার এটির যে সমস্যাটি রয়েছে তা হ'ল: আমি যুক্ত প্রতিটি সেটিংয়ের জন্য আমি কলব্যাক ফাংশনটি সংজ্ঞায়িত করতে চাই না, যদি আমি যা করি তা যদি কিছুটা স্টাফ থেকে প্রতিধ্বনিত হয়।

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>";
}

কোনও বৈশ্বিক চলক স্পর্শ করার দরকার নেই।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.