add_seting_section

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 '<p>id: ' . $arg['id'] . '</p>';             // id: eg_setting_section
	echo '<p>title: ' . $arg['title'] . '</p>';       // title: Example settings section in reading
	echo '<p>callback: ' . $arg['callback'] . '</p>'; // 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();