সাধারণ সেটিংস পৃষ্ঠায় একাধিক কাস্টম ক্ষেত্র যুক্ত করুন


22

আমি যা করতে চাই তা হল সাধারণ সেটিংসে কয়েকটি কাস্টম ক্ষেত্র যুক্ত করা। এই কোডটি আমি ব্যবহার করছি। এটি ঠিকঠাক কাজ করে তবে আমি কীভাবে আরও ক্ষেত্র যুক্ত করতে পারি তা আঁকতে পারি না।

আমি আপাতত দুটি ক্ষেত্র তৈরি করতে চাই, একটি টেলিফোন নম্বর এবং দ্বিতীয়টি ঠিকানার জন্য:

function register_fields()
{
    register_setting('general', 'my_first_field', 'esc_attr');
    add_settings_field('my_first_field', '<label for="my_first_field">'.__('My Field' , 'my_first_field' ).'</label>' , 'print_custom_field', 'general');
}

function print_custom_field()
{
    $value = get_option( 'my_first_field', '' );
    echo '<input type="text" id="my_first_field" name="my_first_field" value="' . $value . '" />';
}

add_filter('admin_init', 'register_fields');

একাধিক ক্ষেত্রের জন্য কাজ করার জন্য আমি যেভাবে পরিচালিত হয়েছিল তা হ'ল সমস্ত কিছু নকল করা।

সুতরাং এটি দেখতে এটি দেখতে হবে:

function register_fields()
{
    register_setting('general', 'my_first_field', 'esc_attr');
    add_settings_field('my_first_field', '<label for="my_first_field">'.__('My Field' , 'my_first_field' ).'</label>' , 'print_first_field', 'general');

    register_setting('general', 'my_second_field', 'esc_attr');
    add_settings_field('my_second_field', '<label for="my_second_field">'.__('My Field' , 'my_second_field' ).'</label>' , 'print_second_field', 'general');
}

function print_first_field()
{
    $value = get_option( 'my_first_field', '' );
    echo '<input type="text" id="my_first_field" name="my_first_field" value="' . $value . '" />';
}

function print_second_field()
{
    $value = get_option( 'my_second_field', '' );
    echo '<input type="text" id="my_second_field" name="my_second_field" value="' . $value . '" />';
}

add_filter('admin_init', 'register_fields');

তবে এটি সম্ভবত এটি করার সর্বোত্তম উপায় নয়, আমি একটি তৈরি করার চেষ্টা করেছি settings_sectionতবে এটি কাজ করে নি বা সংরক্ষণ করে না Its ইত্যাদি এটি খুব বিভ্রান্তিকর।

উত্তর:


26

ঠিক আছে দ্বিতীয় বিট কোডটি প্রযুক্তিগতভাবে এটি করার সঠিক উপায়। তবে শেষে add_settings_field()আপনি যুক্তিগুলি পাস করতে পারেন।

দয়া করে ওয়ার্ডপ্রেস অ্যাড_সেটেটিং_ফিল্ডের ফাংশন উল্লেখ দেখুন। এটি আপনাকে কীভাবে add_settings_field()কার্যকারিতাটি কার্যকারিতা দেয় তার সর্বোত্তম বোঝাপড়া পেতে সহায়তা করবে ।

এখন, সেই কথাটি দিয়েই, আপনি আপনার কলব্যাকের জন্য একটি 'ভাগ করা' ফাংশন ব্যবহার করতে পারেন । যেমন আমি থিমগুলি বিকাশ করার সময় আমার বিকল্প পৃষ্ঠাতে করি do

আমি এটি কীভাবে করি তার উদাহরণ এখানে।

// My Example Fields
add_settings_field(  
    'tutorial_display_count',                      
    'Tutorial Display Count',               
    'ch_essentials_textbox_callback',   
    'ch_essentials_front_page_option',                     
    'ch_essentials_front_page',
    array(
        'tutorial_display_count' // $args for callback
    ) 
);
add_settings_field(  
    'blog_display_count',                      
    'Blog Display Count',               
    'ch_essentials_textbox_callback',   
    'ch_essentials_front_page_option',                     
    'ch_essentials_front_page',
    array(
        'blog_display_count'  // $args for callback
    ) 
);

// My Shared Callback
function ch_essentials_textbox_callback($args) { 

$options = get_option('ch_essentials_front_page_option'); 

echo '<input type="text" id="'  . $args[0] . '" name="ch_essentials_front_page_option['  . $args[0] . ']" value="' . $options[''  . $args[0] . ''] . '"></input>';

}

আপনার প্রয়োজন মাপসই এটি কাস্টমাইজ করতে কিছুটা সময় নেবে, তবে আপনার কলব্যাকগুলির জন্য একটি ভাগ করে নেওয়া ফাংশনটি কোডের ক্ষেত্রে অনেক জায়গা সাশ্রয় করবে। তা ছাড়া, আপনি যেমনটি করছেন ঠিক তেমন করছেন।

--Edit--

ঠিক আছে, এটি আপনার মতো হওয়া উচিত .. প্রয়োজন অনুযায়ী কোডটি সংশোধন করুন, আমি ফ্লাইতে এটি লিখেছিলাম .. আমি এটি পরীক্ষা করে দেখেছি, এবং এটি কার্যকর হয়েছে। add_settings_fieldআপনার প্রয়োজন অনুসারে আপনাকে (গুলি) সংশোধন করতে হবে। যদি আপনাকে আরও যুক্ত করতে হয় তবে কেবল একটি অনুলিপি করুন এবং এটি সম্পাদনা করুন। নিশ্চিত করুন register_settingবা এটি কার্যকর হবে না।

add_action('admin_init', 'my_general_section');  
function my_general_section() {  
    add_settings_section(  
        'my_settings_section', // Section ID 
        'My Options Title', // Section Title
        'my_section_options_callback', // Callback
        'general' // What Page?  This makes the section show up on the General Settings Page
    );

    add_settings_field( // Option 1
        'option_1', // Option ID
        'Option 1', // Label
        'my_textbox_callback', // !important - This is where the args go!
        'general', // Page it will be displayed (General Settings)
        'my_settings_section', // Name of our section
        array( // The $args
            'option_1' // Should match Option ID
        )  
    ); 

    add_settings_field( // Option 2
        'option_2', // Option ID
        'Option 2', // Label
        'my_textbox_callback', // !important - This is where the args go!
        'general', // Page it will be displayed
        'my_settings_section', // Name of our section (General Settings)
        array( // The $args
            'option_2' // Should match Option ID
        )  
    ); 

    register_setting('general','option_1', 'esc_attr');
    register_setting('general','option_2', 'esc_attr');
}

function my_section_options_callback() { // Section Callback
    echo '<p>A little message on editing info</p>';  
}

function my_textbox_callback($args) {  // Textbox Callback
    $option = get_option($args[0]);
    echo '<input type="text" id="'. $args[0] .'" name="'. $args[0] .'" value="' . $option . '" />';
}

সুতরাং আমি যা বুঝতে চাই না তা হ'ল অ্যাড_সেটিং_ফিল্ড () এর 4 র্থ এবং 5 ম প্যারামিটার। আমি জানি প্রথমটি আইডি, দ্বিতীয়টির নাম, তৃতীয়টি এটি প্রদর্শন করার জন্য কলব্যাক, তবে পরবর্তীগুলি কীসের জন্য? আপনার উভয়ের জন্য ch_essentials_front_page_option আছে, আমার একই জায়গায় 'সাধারণ' রয়েছে, পরেরটি খালি এবং শেষটি এখন আরোগুলির অ্যারে gs সুতরাং এখন কলব্যাকে আপনি সেই মানটি নিয়ে get_option পেয়েছেন তবে আমার ক্ষেত্রে সেখানে কী রাখা উচিত তা আমি জানি না।
রিচার্ড মিনিক

2
সম্পাদনা করা হয়েছে, এটি আপনার 100% হওয়া উচিত। আপনার কোনও সমস্যা বা প্রশ্ন থাকলে আমাকে জানান know আমি এটি ভারী মন্তব্য।
মিঃ জাস্টিন

@ মিঃজাস্টিং অনেক ধন্যবাদ আপনার প্রোফাইলটি দেখে এবং এমন একটি অনুসন্ধানের পরীক্ষণ যা আপনি উত্তর দিয়েছিলেন, "কাস্টম-মেনু-পৃষ্ঠা -তে কাস্টম-ট্যাব প্রয়োগ করছে" দেখে আমি আসলে এটি পেয়েছি। এটি খুব ভালভাবে মন্তব্য করা হয়েছিল, তাই আমি তখন আমার কোডটি তুলনা করে শেষ পর্যন্ত বুঝতে পারি কীভাবে এটি কাজ করে। আমার জন্য পৃষ্ঠা এবং বিভাগের পরামিতিগুলি বিভ্রান্তিকর ছিল, যদিও আমি এটি পৃষ্ঠার বিভাগের মতো এবং সেটিংসের বিভাগের মতো নই। সুতরাং এখন আমি উভয়কে একত্রিত করে আরগুজের সাথে আরও একটি মান যুক্ত করেছি, তাই প্রথমটি ক্ষেত্রের আইডি এবং দ্বিতীয়টি হ'ল বিবরণ, এবং তারপরে
আর্কগুলি

দুর্দান্ত, আমি আনন্দিত যে আপনি এটি বের করেছেন, যদি আপনার কোনও প্রশ্ন থাকে তবে আমাকে জানান know
মিস্টার জাস্টিন

আমি মনে করি আমি এখন একটি পৃথক মেনু পৃষ্ঠা তৈরি করতে এবং সেখানে বিকল্পগুলি যুক্ত করার চেষ্টা করব, কারণ সাধারণভাবে এবং নীচে এটির ধরণ হারিয়ে যায়। কীভাবে গেল তা আমি আপনাকে জানাব
রিচার্ড মিয়েনেক

0

আরও ভাল উপায় হ'ল একটি ওয়ার্ডপ্রেস বিকল্প প্লাগইন ব্যবহার করা। সেরাগুলির মধ্যে একটি হ'ল অ্যাডভান্সড কাস্টম ক্ষেত্র।

http://www.advancedcustomfields.com/

আপনি যদি কোনও বিকল্প পৃষ্ঠা অ্যাডোন কিনে থাকেন তবে আপনি প্রচুর বৈশিষ্ট্য সহ সীমাহীন বিকল্প পৃষ্ঠা তৈরি করতে পারেন। একটি ভিডিও কি দয়া করে।

http://www.advancedcustomfields.com/add-ons/options-page/

খুব দরকারী প্লাগইন এবং অ্যাডন।


3
আমি কেবল কয়েকটি ক্ষেত্র যুক্ত করতে চাই, সুতরাং এটির জন্য প্লাগইনটি আমার জন্য একটি ওভারকিল হবে তবে ধন্যবাদ।
রিচার্ড মিনিক

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