নেটওয়ার্ক সেটিংস স্ক্রিনে নতুন সাইট-প্রশস্ত বিকল্পের জন্য ক্ষেত্র কীভাবে যুক্ত করবেন?


15

আমি একটি প্লাগইন নিয়ে কাজ করছি এবং এর একটি অংশে একটি বিকল্প মান নির্ধারণ করা রয়েছে যা কোনও ওয়ার্ডপ্রেস নেটওয়ার্কের সমস্ত সাইটের ক্ষেত্রে প্রযোজ্য। আমি add_site_option এবং get_site_option ফাংশন সম্পর্কে জানি যা আপনাকে মানটি wp_sitemeta টেবিলের মধ্যে সংরক্ষণ করতে দেয় তবে আমি কী বুঝতে পারি না যে কীভাবে ক্ষেত্রগুলিকে ওয়ার্ডপ্রেস ব্যাকএন্ডে উপযুক্ত স্থানে স্থাপন করতে হবে এবং কীভাবে সাইটব্যাপী সংরক্ষণকে বাধা দেওয়া যায় add_site_option কলটি সন্নিবেশ করার জন্য মানগুলি যখন ঘটে তখন।

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

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

তাই - চিন্তা? নতুন নেটওয়ার্ক এডমিন এলাকা দিয়ে প্লাগইনের জন্য সাইটওয়াইড বিকল্পগুলির পরিচালনা করার অনুমতি দেওয়ার কি কোনও দুর্দান্ত উপায় আছে? যদি তা হয় তবে এটি কীভাবে হয়?

উত্তর:


11

এমন একটি wpmu_optionsক্রিয়া রয়েছে যা আপনাকে নেটওয়ার্ক সেটিংস পৃষ্ঠায় আরও HTML যুক্ত করতে দেয়।

আপনি যদি নিজের নিজস্ব সাব-মেনু / পৃষ্ঠাটি সেটিংস প্যারেন্ট মেনুতে যুক্ত করতে চান:

add_action('network_admin_menu', 'add_my_netw_settings_page');
function add_my_netw_settings_page() {
  add_submenu_page(
       'settings.php',
       'Co za asy',
       'Co za asy',
       'manage_network_options',
       'my-netw-settings',
       'your_form'
  );    
}

function your_form(){
  $options = get_site_option('your_plugin');

  ?>
  <form action="<?php echo admin_url('admin-post.php?action=update_my_settings'); ?>" method="post">
    <?php wp_nonce_field('your_plugin_nonce'); ?>

    ...fields go here...

  </form>
  <?php
}

সেভ হ্যান্ডলার:

add_action('admin_post_update_my_settings',  'update_my_settings');
function update_my_settings(){     
  check_admin_referer('your_plugin_nonce');
  if(!current_user_can('manage_network_options')) wp_die('FU');

  // process your fields from $_POST here and update_site_option

  wp_redirect(admin_url('network/settings.php?page=my-netw-settings'));
  exit;  
}

আমি উপরে উল্লিখিত ক্রিয়াটি ব্যবহার করা বেছে নিলে সেভ হ্যান্ডলারটি রেখে দিন এবং ফর্মটি সেই ক্রিয়াতে সংযুক্ত করুন।


1
মূলত একই পদ্ধতির বর্ণনা দেওয়ার জন্য এখানে একটি নিবন্ধ রয়েছে: xplus3.net/2011/07/13/wordpress-network-admin- পৃষ্ঠা
mltsy

1

মূলত, আপনি যদি নিজের নেটওয়ার্ক অ্যাডমিন সেটিংস পৃষ্ঠা তৈরি করতে না চান, আপনাকে অন্য দুটি উত্তরে আলাদাভাবে উল্লিখিত উভয় হুক ব্যবহার করতে হবে:

add_filter( 'wpmu_options' , 'show_network_settings' );
add_action( 'update_wpmu_options', 'save_network_settings' );

function save_network_settings() {
  // checkbox example
  if( isset( $_POST['my_network_checkbox'] ) )
    update_site_option( 'my_network_checkbox', '1' );

  // textfield example
  if( isset( $_POST['my_network_textfield'] ) )
    update_site_option( 'my_network_textfield', sanitize_text_field($_POST['my_network_textfield']) );
}

function show_network_settings() {
    $checkbox = get_site_option('my_checkbox'); 
    $text = get_site_option('my_text'); 
    ?>
    <h3><?php _e('My Network Settings','my-plugin'); ?></h3>
    <table class="form-table">
        <tbody>
            <tr>
                <th scope="row"><?php _e('My Checkbox','my-plugin'); ?></th>
                <td>
                    <label>
                        <input type='checkbox' name='my_checkbox' value='1' <?php checked( $checkbox, '1' ); ?> /> 
                    <?php _e('Check my box.','my-plugin'); ?>
                    </label>
                </td>
            </tr>
            <tr>
                <th scope="row"><label for="my_text"><?php _e('My Text','my-plugin'); ?></label></th>
                <td>
                        <input type='text' name='my_text' value='<?php echo $text; ?>' />
                </td>
            </tr>
        </tbody>
    </table>
    <?php
}

খুব স্পষ্ট ব্যাখ্যা এবং দরকারী কোড নমুনার জন্য দেখুন http://zao.is/2013/07/adding-settings-to-network-settings-for-wordpress-multisite/


0

আমি ভীত যে আমার জানা একমাত্র পদ্ধতিটি হ'ল এইচটিএমএলটিকে ম্যানুয়ালি ইনজেক্ট করার এবং সেই বিকল্পগুলির আপডেটগুলি নিজেই মোকাবেলা করার বিষয়ে উল্লেখ করেছেন। আপনার বিকল্পগুলি সংরক্ষণের জন্য আপনাকে যে ক্রিয়াটি ব্যবহার করতে হবে তা হ'ল update_wpmu_options। প্রয়োজনে আমি আরও বিশদ উদাহরণ সরবরাহ করতে পারি, কেবল আমাকে জানিয়ে দিন।

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