add_settings_section(string $id, string $title, callback $callback, string $page,array $args=array() )
اضافه کردن بخش جدید به بخش تنظیمات داشبورد وردپرس
توضیحات:
یکی از توابع بخش ادمین وردپرس میباشد و برای ایجاد بخش جدید در منو تنظیمات استفاده میشود.
برای اضافه کردن یک بخش جدید در منو تنظیمات، با فراخوانی do_settings_sections انجام میشود.
همچنین فیلدهای که در این بخش اضافه میشود با استفاده از add_settings_field تعریف و افزوده میشود.
در پارامتر callback باید نام یک تابع را قرار دهید، این تابع متنی را در بالای بخش تنظیمات جدید و قبل از فیلدها نمایش میدهد. این پارامتر دلخواه است و می توانید آن را بدون محتوا رها کنید.
پارامترها
id$: این پارامتر از نوع متنی و الزامی است و باید یک نام منحصر به فرد باشد.
title$: این پارامتر از نوع متنی و الزامی است و یک عنوان برای بخش جدید که میخواهید ایجاد کنید را دربرمیگیرد.
callback$: این پارامتر عنوان یک تابع Callback را در بر میگیرد و الزامی میباشد که خروجی آن چاپ یک عنوان برای بخش جدیدی است که ایجاد کردهاید.
page$: این پارامتر متنی و الزامی است و برای این بخش باید یک slug را تنظیم کنید که میتواند slug یکی از بخشهای تنظیمات باشد و یا slug یک بخش شخصی سازی باشد. به صورت پیش فرض slugهای بخش تنظیمات به این شرح است: general, reading, writing, discussion, media
args$: پارامترهایی که برای بخش جدید که ایجاد شده است استفاده میشود این بخش اختیاری و از نوع آرایه است و شامل:
- before_section: کد html که برای بخش جدید استفاده میشود و قبل از شروع بخش میآید.
- after_section: کد html که بعد از بخش جدید میآید.
- section_class: نام کلاسی که برای بخش جدید استفاده میشود.
مثالها:
add_settings_section(
'eg_setting_section',
'Example settings section in reading',
'eg_setting_section_callback_function',
'reading'
);
function eg_setting_section_callback_function( $arg ) {
// echo section intro text here
echo 'id: ' . $arg['id'] . '
'; // id: eg_setting_section
echo 'title: ' . $arg['title'] . '
'; // title: Example settings section in reading
echo 'callback: ' . $arg['callback'] . '
'; // callback: eg_setting_section_callback_function
}
منبع:
فایل:
wp-admin/includes/template.php
function add_settings_section( $id, $title, $callback, $page, $args = array() ) {
global $wp_settings_sections;
$defaults = array(
'id' => $id,
'title' => $title,
'callback' => $callback,
'before_section' => '',
'after_section' => '',
'section_class' => '',
);
$section = wp_parse_args( $args, $defaults );
if ( 'misc' === $page ) {
_deprecated_argument(
__FUNCTION__,
'3.0.0',
sprintf(
/* translators: %s: misc */
__( 'The "%s" options group has been removed. Use another settings group.' ),
'misc'
)
);
$page = 'general';
}
if ( 'privacy' === $page ) {
_deprecated_argument(
__FUNCTION__,
'3.5.0',
sprintf(
/* translators: %s: privacy */
__( 'The "%s" options group has been removed. Use another settings group.' ),
'privacy'
)
);
$page = 'reading';
}
$wp_settings_sections[ $page ][ $id ] = $section;
}
ایجاد یک بخش جدید با استفاده از تعریف در یک کلاس PHP
class custom_setting {
function __construct() {
/**
* register wp_setting_init to the admin_init action hook
*/
add_action('admin_init', array($this,'wp_setting_init'));
}
function wp_setting_init() {
// register a new setting for "reading" page
register_setting('reading', 'page_limit');
// register a new section in the "reading" page
add_settings_section(
'wp_custom_setting_section',
'WP Custom Setting Section',
array($this,'wp_custom_setting_section_cb'),
'reading'
);
}
/**
* callback functions
*/
// section content cb
function wp_custom_setting_section_cb() {
esc_html_e('Page limit is 10','text-domain');
}
}
new custom_setting();