ایجاد و استفاده از گزینه ها

///ایجاد و استفاده از گزینه ها

ایجاد و استفاده از گزینه ها

سایر بخش های سری آموزشی " ایجاد افزونه وردپرس "

اضافه کردن فیلدهای تنظیمات

شما می توانید توسط تابع  add_settings_field() یک فیلد را به یک صفحه موجود ، در تنظیمات افزونه خود اضافه کنید .

تابع فراخوان شما تنها به HTML مناسب با مقادیر ورودی و پر کردن آنها نیاز دارد . عمل ذخیره سازی در پس زمینه انجام می شود .

 

شما می توانید یک بخش تنظیمات ، در یک صفحه موجود را ، توسط تابع add_settings_section() اضافه کنید .

نکته : برای استفاده از هرگونه گزینه ای توسط تابع  add_settings_field() ، شما باید آن را ثبت کنید ، در غیراینصورت آن گزینه ها ذخیره و بروزرسانی اتوماتیک نخواهند شد .

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

 

$id : رشته ای که به عنوان خاصیت شناسه ( id ) برچسب مورد استفاده قرار می گیرد .

$title : عنوان فیلد

$callbackتابع فراخوان که فیلد ها را با ورودی های مورد انتظار ، به عنوان بخشی از فرم ، پر می کند .

نام و آی دی هر فیلد باید با $id این تابع یکی باشد .

$page : نوع صفحه تنظیمات ، که مشخص می کند فیلد های تنظیمات در کدام قسمت تنظیمات وردپرس نمایش داده شوند (همگانی،نوشتن،خواندن،گفتگوها،رسانه و پیوندهای یکتا).

 

$section  : مشخص می کند که ،فیلد جدید به قسمت پیش فرض بخش ها اضافه شود یا به یک بخش که خود شما آن را ایجاد کرده اید .

$args : آرگومان های اضافه را نگهداری می کند .

 

اضافه کردن بخش های تنظیمات

 

بخش های تنظیمات ، گروهی از تنظیمات هستند که شما آنها را در صفحه تنظیمات ، با یک عنوان مشترک مشاهده می کنید .

شما می توانید بخش های تنظیمات جدید دلخواه خود را ، به صفحات تنظیمات موجود اضافه کنید ، یا در غیر اینصورت صفحه تنظیمات سفارشی خود را ایجاد ، و بخش های تنظیمات را در آن قرار دهید .

بخش های تنظیمات به افزونه شما امکان نگهداری ساده تر را می دهد و کاربران افزونه راحتتر کار با افزونه را یاد می گیرند .

add_settings_section( $id, $title, $callback, $page )

 

$id : رشته مورد استفاده برای خاصیت شناسه (id) برچسب

$title : عنوان بخش

$callback :تابع فراخوانی که بخش تنظیمات را با محتوای مورد نظر شما پر می کند . این تابع باید محتوا را در خروجی چاپ کند(مثلاً با دستور echo) .

$page : صفحه تنظیماتی که این بخش تنظیمات باید در آن نمایش داده شود (همگانی ، خواندن ، نوشتن ، رسانه و … ).

 

ثبت یک تنظیم (Registering a Setting)

از تابع register_settings() برای تعریف یک گزینه (option)، که فیلد تنظیم (setting) در آن ذخیره می شود ، استفاده می شود .

register_setting( $settings_section, $option_name, $sanitize_callback ) unregister_setting( $option_group, $option_name, $sanitize_callback )

 

$settings_section : نام گروه تنظیمات . این گزینه باید مطابق با “لیست سفید نام کلید گزینه” باشد .

نام های پیش فرض “لیست سفید نام کلید گزینه” شامل general یا همگانی ، discussion یا گفتگوها ، reading یا خواندن و … است .

$option_name : نام گزینه برای پاکسازی و ذخیره شدن . شما از این نام در توابعی مانند get_option() و update_option() استفاده خواهید کرد .

$callback  : یک تابع فراخوان که مقدار گزینه را پاکسازی می کند .

نکته : تابع register_setting()  همانند توابع add_settings_*() که در بالا توضیح داده شد ، باید در قلاب admin_init فراخوانی شود  .

به مثال زیر توجه کنید :

/*
 * Add all your sections, fields and settings during admin_init
 */
 
function wporg_settings_api_init() {
// Add the section to reading settings so we can add our fields to it
add_settings_section(
'wporg_setting_section',
'Example settings section in reading',
'wporg_setting_section_callback_function',
'reading'
);
 
// Add the field with the names and function to use for our new settings, put it in our new section
add_settings_field(
'wporg_setting_name',
'Example setting Name',
'wporg_setting_callback_function',
'reading',
'wporg_setting_section'
);
 
// Register our setting in the "reading" settings section
register_setting( 'reading', 'wporg_setting_name' );
}
 
add_action( 'admin_init', 'wporg_settings_api_init' );
 
/*
 * Settings section callback function
 */
 
function wporg_setting_section_callback_function() {
echo '<p>Intro text for our settings section</p>';
}
 
/*
 * Callback function for our example setting
 */
 
function wporg_setting_callback_function() {
$setting = esc_attr( get_option( 'wporg_setting_name' ) );
echo "<input type='text' name='wporg_setting_name' value='$setting' />";
}

 

استفاده از تنظیمات

داشتن تنظیمات برای افزونه شما خوب است ، اما تا زمانی که از آن تنظیمات استفاده نکنید ، غیرمفید و شاید مضر هم باشند .

برای استفاده از تنظیمات از تابع get_option() استفاده می شود .

تابع get_option()  دو پارامتر قبول می کند :

پارامتر اول ، نام گزینه ای است که می خواهید آن را دریافت کنید

و پارامتر اختیاری دوم ، مقدار پیش فرض برای گزینه مورد نظر برای بازیابی

get_option( 'wporg_setting_name', false );

 

در این مثال ، گزینه ای به نام wprog_setting_name دریافت شده است و چنانچه هیچ مقداری در آن ذخیره نشده باشد ، false به عنوان مقدار پیش فرض برگشت داده می شود .

احتمالاً شما نمی خواهید گزینه ها را به صورت مستقیم فراخوانی کنید ، بنابراین کد شما می تواند شبیه به کد زیر نیز باشد :

$options = get_option( 'wporg_setting_name', false );

 

اکنون شما گزینه مورد نظر خود را در متغیر $options بارگذاری کرده اید و می توانید آن را در کدهای خود مورد استفاده قرار دهید.

در اینجا یک سناریوی واقعی تر را مشاهده می کنید :

/**
 * Add an admin submenu link under Settings
 */
function wporg_add_options_submenu_page() {
     add_submenu_page(
          'options-general.php',          // admin page slug
          __( 'WPORG Options', 'wporg' ), // page title
          __( 'WPORG Options', 'wporg' ), // menu title
          'manage_options',               // capability required to see the page
          'wporg_options',                // admin page slug, e.g. options-general.php?page=wporg_options
          'wporg_options_page'            // callback function to display the options page
     );
}
add_action( 'admin_menu', 'wporg_add_options_submenu_page' );
 
/**
 * Register the settings
 */
function wporg_register_settings() {
     register_setting(
          'wporg_options',  // settings section
          'wporg_hide_meta' // setting name
     );
}
add_action( 'admin_init', 'wporg_register_settings' );
 
/**
 * Build the options page
 */
function wporg_options_page() {
     if ( ! isset( $_REQUEST
['settings-updated'] ) ) $_REQUEST['settings-updated'] = false; ?> <div class="wrap"> <?php if ( false !== $_REQUEST['settings-updated'] ) : ?> <div class="updated fade"><p><strong><?php _e( 'WPORG Options saved!', 'wporg' ); ?></strong></p></div> <?php endif; ?> <h2><?php echo esc_html( get_admin_page_title() ); ?></h2> <div id="poststuff"> <div id="post-body"> <div id="post-body-content"> <form method="post" action="options.php"> <?php settings_fields( 'wporg_options' ); ?> <?php $options = get_option( 'wporg_hide_meta' ); ?> <table class="form-table"> <tr valign="top"><th scope="row"><?php _e( 'Hide the post meta information on posts?', 'wporg' ); ?></th> <td> <select name="wporg_hide_meta[hide_meta]" id="hide-meta"> <?php $selected = $options['hide_meta']; ?> <option value="1" <?php selected( $selected, 1 ); ?> >Yes, hide the post meta!</option> <option value="0" <?php selected( $selected, 0 ); ?> >No, show my post meta!</option> </select><br /> <label class="description" for="wporg_hide_meta[hide_meta]"><?php _e( 'Toggles whether or not to display post meta under posts.', 'wporg' ); ?></label> </td> </tr> </table> </form> </div> <!-- end post-body-content --> </div> <!-- end post-body --> </div> <!-- end poststuff --> </div> }

 

در مثال بالا ، یک صفحه از گزینه ها برای یک تنظیم ایجاد شده است ، که توسط آن (منظور تنظیم است) ،اطلاعات متا نوشته ، در زیر محتوای نوشته ، مخفی یا نمایش داده می شود .

یک تنظیم (setting) توسط تابع register_setting()  ثبت و توسط تابع get_option()  بازیابی شده است .

اگر تصمیم گرفتید که یک تنظیم دیگر را به این صفحه گزینه ها اضافه کنید ، می توانید از نام بخش تنظیمات wprog_options در هنگام فراخوانی تابع register_settings به صورت زیر استفاده کنید :

register_setting( 'wporg_options', 'wporg_new_setting' );
۱۳۹۶/۸/۵ ۲۱:۳۸:۲۲

درباره نویسنده:

هدف ما در تیم راهنمای وردپرس ارائه خدمات به علاقه مندان در حوزه وب و بخصوص وردپرس و در نهایت ایجاد کسب و کار و به ثمر رسیدن ایده های شما دوستان خلاق میباشد.

نظر شما چیست