বিকল্প পৃষ্ঠায় চেকবক্স এবং রেডিও বোতামটি কীভাবে ব্যবহার করবেন?


16

আমাকে বোকা বলুন তবে কীভাবে করব তা আমি ঠিক বুঝতে পারি না। পাঠ্য ইনপুট জন্য আমি ঠিক চাই:

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

এবং তারপরে এটি ব্যবহার করে ওয়ার্কপ্রেসে ookুকুন 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'] ); ?> />

বিঃদ্রঃ: অবশ্যই এর মানটির সাথে তুলনা করার আগে কীটি সেট করা আছে তা পরীক্ষা করা বুদ্ধিমানের কাজ হবে (এটি ছোট রাখার জন্য আমি উপরের দিক থেকে বাদ দিয়েছি)।

উপরের সাহায্য করেছে? যদি তা না হয় তবে আমাকে কী কী স্পষ্ট করার প্রয়োজন তা জানান (... বা আমি কী অনুপস্থিত) ..

Re: checked()

ফাংশনটি কোথায় সংজ্ঞায়িত হয়েছে তা আপনি এখানে খুঁজে পেতে পারেন (ওয়ার্ডপ্রেসে)। http://core.trac.wordpress.org/browser/tags/3.0.2/wp-includes/general-template.php#L2228

প্রথম প্যারামিটারটি মূলত শর্তসাপেক্ষ বিবৃতি, এবং দ্বিতীয় প্যারামিটারটি (যদি আপনি এটি সংজ্ঞায়িত করতে চান) তবে যা পরীক্ষা করা উচিত। এর সাথে তুলনা করার জন্য ডিফল্ট মানটি হ'ল সত্য ... সুতরাং যদি checked( 1 == 1, true )আমি যা করতে চাই তবে 1 == 1 টি ঠিক সমান কিনা তা পরীক্ষা করে দেখছি। শর্তসাপেক্ষে যদি কোনও ম্যাচ হিট হয় তবে আপনি পাবেনchecked="checked" ফিরে আসবেন ..

দ্রষ্টব্য: আমি জিনিসগুলি ব্যাখ্যা করতে আবর্জনা বোধ করছি, সুতরাং উপরের আরও স্পেসিফিকেশন প্রয়োজন হলে আমি বিরক্ত হবো না ... কেবল আমাকে জানাতে হবে ..;)


আমার মস্তিষ্ক এই আইমে কাজ করছে না কারণ আমি হতাশ হয়েছি যে আমি নিজে থেকে এটি বের করতে পারি না। আপনি কি ব্যাখ্যা করতে checked( 1 == $options['option_one']পারেন? কি checked()একটি পিএইচপি ফাংশন কারণ আমি এটা ম্যানুয়াল খুঁজে পাইনি।
জোয়ান

আমি কোনও মন্তব্যে ব্যাখ্যা করতে পারি না, আমি আমার উত্তরটি শীঘ্রই আপডেট করব, উপরে দেখুন ..;)
t31os

আহা! সাহায্যের জন্য অনেক ধন্যবাদ! checked()ফাংশন শুধুমাত্র একটি আমি গুগল পুরনো খুঁজে পাইনি কারণ আপাতদৃষ্টিতে এটি নথিভুক্ত না হয়। "টার্ম + ওয়ার্ডপ্রেস" জিজ্ঞাসা করার সময় আমি ঠিক যা চাই তা পেতে অভ্যস্ত ছিলাম। :-)
জোয়ান

স্পষ্ট করে বলতে গেলে, প্রথম প্যারামিটারটি যা যাচাই করা উচিত, দ্বিতীয়টি হ'ল প্রথম মানটির সাথে তুলনা করা ... সুতরাং উদাহরণস্বরূপ আপনি এটি করতে পারতেন ... checked( 1, 2 )1 টি 2 এর সমান কিনা তা পরীক্ষা করতে ... যা কিছুই আউটপুট দেয় না, তাই ফানসিটনটি নির্দিষ্টভাবে চেকবক্স বা রেডিও বোতামগুলির জন্য একটি পরীক্ষিত রাষ্ট্র আউটপুট করার জন্য ডিজাইন করা হয়েছে .. যে কোনও ক্ষেত্রে সহায়তা করতে খুশি ...;)
t31os

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
এই উত্তর হওয়া উচিত।

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