Advertisement
  1. Code
  2. Theme Development

Повна Інструкція по WordPress Settings API, Частина 2: Розділи, Поля і Налаштування

Scroll to top
Read Time: 20 min
This post is part of a series called The Complete Guide to the WordPress Settings API.
The WordPress Settings API, Part 1: What It Is, Why It Matters
The WordPress Settings API, Part 3: All About Menus

() translation by (you can also view the original English article)

Коли доходить до розробки Тем та Плагінів WordPress, існує багато різноманітних шляхів, якими розробники створюють свої меню, параметри та функції перевірок.  Справа в тому, що насправді існує тільки один спосіб зробити це правильно в рамках WordPress:  Settings API.

Ця серія націлена стати повним довідником, як скористатися перевагою WordPress Settings API, щоб ви мали єдине місце, де зібрані рекомендації з правильної розробки ваших тем і плагінів.

В першій статті в цій серії ми широко роздивились Settings API і чому це важливо. Тут ми збираємося почати занурення в API і дізнатись, як скористатися перевагами всього того, що він пропонує.

Ми поглянемо на основоположну одиницю параметрів WordPress - розділи, поля та налаштування - і як включити їх в рідну панель управління WordPress.


У Розділах, Полях та Налаштуваннях

Перед тим, як ми перейдемо до написання будь-якого коду, важливо зрозуміти три основні складові WordPress Settings API.

  1. Поля - це самостійні параметри, що з'являються на сторінках меню. Поля відповідають дійсним елементам на екрані. Тобто, поле управляється текстовим полем, радіо перемикачем, прапорцем, і т. д. Поля представляють значення, що зберігається в базі даних WordPress.
  2. Розділи - це логічне згрупування полів. Кожного разу, коли ви працюєте із декількома полями, швидше за все ви збираєтеся згрупувати споріднені параметри разом - Розділи представляють таке групування. Крім того, якщо ваша робота включає в себе декілька сторінок адміністрування, кожен розділ часто відповідає своїй окремій сторінці меню (хоча, ви можете додати їх до існуючих розділів).
  3. Налаштування реєструються після того, як ви визначили обидва Поля та Розділи. Думайте про Налаштування як про поєднання Полів і Розділів, до якого вони належать.

Зараз не хвилюйтеся, якщо вам до цих пір щось незрозуміло, про будь-який з основних компонентів. Ми збираємося глибоко поглянути на кожен компонент, поряд зі зразком вихідного коду, який зв'яже все до купи.


Пісочниця для Наших Налаштувань

Для того, щоб розпочати програмування із Settings API, давайте встановимо основну тему, яка зможе бути використана у цій статті та серії, що залишається. Весь вихідний код також доступний на GitHub.

У вашій локальній установці WordPress перейдіть в каталог "themes", створіть новий, пустий каталог і назвіть його "WordPress-Settings-Sandbox". Додайте наступні три файли:

  • style.css – Це таблиця стилів для теми. Вона включає в себе всю мета-інформацію теми. WordPress потребує її
  • index.php – Це стандартний шаблон теми. На початку він може бути порожнім. WordPress потребує його
  • functions.php – Тут ми будемо робити більшість своєї роботи. Його ми будемо заповнювати на шляху всієї нашої інструкції.

Додайте наступний код до style.css:

1
/*

2
Theme Name: WordPress Settings Sandbox

3
Theme URI: YOUR URI

4
Description: A simple theme used to showcase the WordPress Settings API.

5
Author: YOUR NAME

6
Author URI: YOUR WEBSITE

7
Version: 0.1

8


9
License:

10


11
 Copyright 2012 YOUR NAME (YOUR EMAIL ADDRESS)

12


13
  This program is free software; you can redistribute it and/or modify

14
  it under the terms of the GNU General Public License, version 2, as 

15
  published by the Free Software Foundation.

16


17
  This program is distributed in the hope that it will be useful,

18
  but WITHOUT ANY WARRANTY; without even the implied warranty of

19
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

20
  GNU General Public License for more details.

21


22
  You should have received a copy of the GNU General Public License

23
  along with this program; if not, write to the Free Software

24
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

25
  

26
*/

Далі, додайте наступний код до index.php:

1
<!DOCTYPE html>
2
<html>
3
  <head>	
4
		<title>The Complete Guide To The Settings API | Sandbox Theme</title>
5
	</head>
6
	<body>
7
	
8
		<div id="header">
9
			<h1>Sandbox Header</h1>
10
		</div><!-- /#header -->
11
12
		<div id="content">
13
			<p>This is theme content.</p>
14
		</div><!-- /#content -->
15
16
		<div id="footer">
17
			<p>&copy; <?php echo date('Y'); ?> All Rights Reserved.</p>
18
		</div><!-- /#footer -->
19
	
20
	</body>
21
</html>

Зверніть увагу, що вищезазначена розмітка надзвичайно проста і я не рекомендую використовувати її як основу для розробки тем. Вона приведена спеціально для цієї серії статей і просто є засобом, за допомогою якого ми будемо зчитувати значення з Settings API.

На екрані адміністрування Теми, оновіть сторінку і ви маєте побачити нову тему Sandbox, що з'явилась. Давайте, активуйте її.

Theme Selection

На даний час ми готові почати.


Наш перший набір Параметрів

Помітьте, в згаданому вище шаблоні index ми визначили три конкретних області вмісту: заголовок, зміст і нижній колонтитул. Використовуючи Settings API, давайте створимо "Загальний" розділ, що містить три поля, кожний з яких відповідає одному з особливих областей змісту, що ми щойно визначили.

Перед написанням коду, я завжди вважаю корисним перерахувати те, що мені потрібно зробити. В цьому випадку, ми повинні зробити наступне:

  • Визначити розділ, що буде використано для групування кожного поля
  • Додати три поля - одне для кожної області вмісту - до розділу, що визначений вище
  • Зареєструвати налаштування за допомогою WordPress API.

Для того, щоб уникнути будь-яких масивних блоків коду і щоб переконатися, що ми охоплюємо всі наші основи, ми будемо брати кожен із зазначених пунктів один за одним.

Створення розділу

Для того, щоб знайти наш «Загальний» розділ параметрів, ми необхідно буде використати функцію add_settings_section із Settings API. Згідно Кодексу WordPress, add_settings_section потребує три аргументи:

  • ID – Це унікальний ідентифікатор цього конкретного розділу. Зверніть увагу, що це значення, яке буде використовуватись для реєстрації кожного поля в межах цього розділу. Ви можете назвати його як завгодно, проте я рекомендую, щоб ви зробили його таким, щоб можна було прочитати.
  • Title – Це значення буде відображатися у верхній частині сторінки в панелі налаштувань WordPress, коли користувачі працюють з вашими параметрами.
  • Callback – Це ім'я функції, яку ми визначимо для генерування тексту на екрані для функції. Вона може використовуватись для різноманітного функціоналу. У найпростішому випадку її можна використати для надання набору інструкцій або опису для вашої сторінки параметрів.
  • Page – Це значення, що використовується для сповіщення WordPress, на якій саме сторінці мають відображатися ваші параметри. У наступній статті ми будемо використовувати його, щоб додати параметри до наших власних веб-сторінок. Тепер ми будемо додавати його для існуючої сторінки Загальні Параметри.

Разом з тим давайте продовжимо і визначимо наш розділ. Погляньте на наступний коментований код. Ми добавимо це до нашого файлу functions.php.

Слово про фрагменти коду в цій серії: не треба просто копіювати і вставляти цей код. Знайдіть час, щоб прочитати кожен рядок, побачити, як аргументи відповідають кожній функції API, що ми охоплюємо та слідкуйте відповідним коментарям, щоб переконатися, що ви звикли до того, що ми робимо:

1
<?php
2
3
/* ------------------------------------------------------------------------ *

4
 * Setting Registration

5
 * ------------------------------------------------------------------------ */ 
6
7
/**

8
 * Initializes the theme options page by registering the Sections,

9
 * Fields, and Settings.

10
 *

11
 * This function is registered with the 'admin_init' hook.

12
 */
13
add_action('admin_init', 'sandbox_initialize_theme_options');
14
function sandbox_initialize_theme_options() {
15
16
	// First, we register a section. This is necessary since all future options must belong to one.

17
	add_settings_section(
18
		'general_settings_section',			// ID used to identify this section and with which to register options

19
		'Sandbox Options',					// Title to be displayed on the administration page

20
		'sandbox_general_options_callback',	// Callback used to render the description of the section

21
		'general'							// Page on which to add this section of options

22
	);
23
} // end sandbox_initialize_theme_options

24
25
/* ------------------------------------------------------------------------ *

26
 * Section Callbacks

27
 * ------------------------------------------------------------------------ */ 
28
29
/**

30
 * This function provides a simple description for the General Options page. 

31
 *

32
 * It is called from the 'sandbox_initialize_theme_options' function by being passed as a parameter

33
 * in the add_settings_section function.

34
 */
35
function sandbox_general_options_callback() {
36
	echo '<p>Select which areas of content you wish to display.</p>';
37
} // end sandbox_general_options_callback

38
 
39
?>

Має сенс? Взагалі-то кажучи, здається, що не дуже, але перейдіть до меню Налаштування і натисніть на Загальні. Прокрутіть в кінець сторінки, і ви повинні побачити ваш новий розділ параметрів.

General SettingsGeneral SettingsGeneral Settings

Ви можете додати цей розділ до будь-яких сторінок в меню Налаштування. У наведеному вище прикладі ми вже пройшли "Загальні", як останній параметр у add_settings_section, але якщо ви хотіли б додати його до іншої сторінки, ви можете передати її заголовок. Ось посилання для кожної зі сторінок Налаштування та відповідної клавіші:

  • Загальне, "general"
  • Написання, "writing"
  • Читання, "reading"
  • Обговорення, "discussion"
  • Медіа, "media"
  • Приватність, "privacy"
  • Постійні посилання, "permalink"

Додавання Полів

Тепер, коли ми визначили розділ, ми можемо представити кілька налаштувань. Нагадаємо, що в нашому шаблоні index ми визначили три конкретних елемента контейнера: заголовок, зміст і нижній колонтитул.

Хоча ми будемо представляти більше параметрів протягом усієї цієї серії, сьогодні ми збираємося представити спосіб перемикання видимості кожного з наведених вище елементів.

Так само, як ми це зробили з розділом налаштувань, я хотів би перерахувати те, що саме нам потрібно зробити перед тим, як написати будь-який код. З тих пір, як ми збираємося переключати кожну з областей змісту...

  • Нам потрібно мати три налаштування - по одному для кожної області змісту
  • Оскільки ми перемикаємо видимість, ми можемо використовувати прапорець в якості нашого елементу інтерфейсу

Зараз ми готові представити перше поле налаштування. Щоб це зробити, ми використаємо функцію add_settings_field Ця функція приймає шість параметрів (чотири обов'язкових, два необов'язкових). Вони наступні:

  • ID – ID самого поля. Він використовуватиметься для збереження та отримання значення по всій темі. Я рекомендую назвати його чимось значимим для поліпшення читаності вашого коду.
  • Title – Це значення відносить заголовок до поля параметрів на сторінці адміністрування. Воно має бути зрозумілим, так як буде прочитане кінцевими користувачами.
  • Callback – Це назва функції, яка використовується для надання фактичного елементу інтерфейсу, з яким будуть взаємодіяти користувачі.
  • Page – Подібно до секції, що ми виклали, цей параметр визначає, на якій сторінці повинен знаходитися цей параметр. Якщо ви лише представляєте один єдиний параметр, ви можете додати його до існуючої сторінки, а не до розділу, який ви визначили.
  • Section – Це відноситься до розділу, що ви створили за допомогою функції add_settings_section. Це значення - це ID, що ви визначили, коли створювали розділ. Цей параметр не обов'язковий.
  • Arguments – Це масив аргументів, що передаються в функцію зворотнього виклику. Це корисно, якщо присутня додаткова інформація, яку ви хочете включити до представлення вашого елементу параметра. Цей параметр не обов'язковий.

З урахуванням наведеного, давайте пройдемо і визначимо наше перше поле налаштування. Зокрема, ми будемо представляти параметр для перемикання видимості заголовка.

По-перше, ми зробимо виклик add_settings_field одразу після виклику функції add_settings_section у функції ініціалізації, що ми писали в першій частині уроку. Продивіться кожний рядок і коментар для кожного з параметрів:

1
// Next, we will introduce the fields for toggling the visibility of content elements.

2
add_settings_field(	
3
	'show_header',						// ID used to identify the field throughout the theme

4
	'Header',							// The label to the left of the option interface element

5
	'sandbox_toggle_header_callback',	// The name of the function responsible for rendering the option interface

6
	'general',							// The page on which this option will be displayed

7
	'general_settings_section',			// The name of the section to which this field belongs

8
	array(								// The array of arguments to pass to the callback. In this case, just a description.

9
		'Activate this setting to display the header.'
10
	)
11
);

Далі ми визначимо зворотній виклик, що відноситься до згаданої вище функції . Цей зворотній виклик використовується для візуалізації прапорцю і опису на сторінці адміністрування:

1
/**

2
 * This function renders the interface elements for toggling the visibility of the header element.

3
 * 

4
 * It accepts an array of arguments and expects the first element in the array to be the description

5
 * to be displayed next to the checkbox.

6
 */
7
function sandbox_toggle_header_callback($args) {
8
	
9
	// Note the ID and the name attribute of the element should match that of the ID in the call to add_settings_field

10
	$html = '<input type="checkbox" id="show_header" name="show_header" value="1" ' . checked(1, get_option('show_header'), false) . '/>';
11
	
12
	// Here, we will take the first argument of the array and add it to a label next to the checkbox

13
	$html .= '<label for="show_header"> '  . $args[0] . '</label>';
14
	
15
	echo $html;
16
	
17
} // end sandbox_toggle_header_callback

Що стосується прапорця, зверніть увагу на коментарі, але не сильно турбуйтеся про деякі атрибути, які ви не впізнаєте (наприклад, виклик функції checked()). Пізніше в цій серії ми збираємося подивитися на кожний елемент вводу та їх відповідні допоміжні функції.

Наразі ваш файл functions.php повинен виглядати так:

1
<?php
2
3
/* ------------------------------------------------------------------------ *

4
 * Setting Registration

5
 * ------------------------------------------------------------------------ */
6
7
/**

8
 * Initializes the theme options page by registering the Sections,

9
 * Fields, and Settings.

10
 *

11
 * This function is registered with the 'admin_init' hook.

12
 */
13
add_action('admin_init', 'sandbox_initialize_theme_options');
14
function sandbox_initialize_theme_options() {
15
16
	// First, we register a section. This is necessary since all future options must belong to one.

17
	add_settings_section(
18
		'general_settings_section',			// ID used to identify this section and with which to register options

19
		'Sandbox Options',					// Title to be displayed on the administration page

20
		'sandbox_general_options_callback',	// Callback used to render the description of the section

21
		'general'							// Page on which to add this section of options

22
	);
23
	
24
	// Next, we will introduce the fields for toggling the visibility of content elements.

25
	add_settings_field(	
26
		'show_header',						// ID used to identify the field throughout the theme

27
		'Header',							// The label to the left of the option interface element

28
		'sandbox_toggle_header_callback',	// The name of the function responsible for rendering the option interface

29
		'general',							// The page on which this option will be displayed

30
		'general_settings_section',			// The name of the section to which this field belongs

31
		array(								// The array of arguments to pass to the callback. In this case, just a description.

32
			'Activate this setting to display the header.'
33
		)
34
	);
35
	
36
} // end sandbox_initialize_theme_options

37
38
/* ------------------------------------------------------------------------ *

39
 * Section Callbacks

40
 * ------------------------------------------------------------------------ */ 
41
42
/**

43
 * This function provides a simple description for the General Options page. 

44
 *

45
 * It is called from the 'sandbox_initialize_theme_options' function by being passed as a parameter

46
 * in the add_settings_section function.

47
 */
48
function sandbox_general_options_callback() {
49
	echo '<p>Select which areas of content you wish to display.</p>';
50
} // end sandbox_general_options_callback

51
52
/* ------------------------------------------------------------------------ *

53
 * Field Callbacks

54
 * ------------------------------------------------------------------------ */ 
55
56
/**

57
 * This function renders the interface elements for toggling the visibility of the header element.

58
 * 

59
 * It accepts an array of arguments and expects the first element in the array to be the description

60
 * to be displayed next to the checkbox.

61
 */
62
function sandbox_toggle_header_callback($args) {
63
	
64
	// Note the ID and the name attribute of the element match that of the ID in the call to add_settings_field

65
	$html = '<input type="checkbox" id="show_header" name="show_header" value="1" ' . checked(1, get_option('show_header'), false) . '/>'; 
66
	
67
	// Here, we will take the first argument of the array and add it to a label next to the checkbox

68
	$html .= '<label for="show_header"> '  . $args[0] . '</label>'; 
69
	
70
	echo $html;
71
	
72
} // end sandbox_toggle_header_callback

73
74
?>

Тепер оновіть сторінку Загальні Параметри. Ви маєте побачити ваш прапорець із міткою "Header" та описом поруч прапорця.

First OptionFirst OptionFirst Option

На жаль, вона поки що фактично не зберігає значення в базу даних.

Реєстрування Наших Налаштувань

Для того, щоб наші поля для реально збереглися до бази даних, ми повинні зареєструвати їх за допомогою WordPress. Зробити це відносно легко - нам лише необхідно використати перевагу функції register_setting.

Ця функція приймає три аргументи (два обов'язкових, один необов'язковий):

  • Option Group – Це насправді ім'я групи параметрів. Це може бути як існуюча група параметрів, представлена WordPress, або ID, що ми визначили, коли створювали свій власний розділ налаштувань. Цей параметр обов'язковий.
  • Option Name – Це ID поля, яке ми реєструємо. У нашому випадку ми реєструємо лише одне поле, але якщо б ми реєстрували декілька полів, ми повинні були б визивати цю функцію для кожного поля, що ми реєструємо. За мить ми подивимося на це більш ретельно. Цей аргумент є обов'язковим.
  • Callback – Цей аргумент вимагає ім'я функції, що буде визвана перед збереженням даних до бази даних. Цей аргумент виходить за рамки цієї статті, але ми будемо використовувати його до закінчення серії. Цей аргумент не є обов'язковим.

Тепер давайте зареєструємо параметр, який ми тільки-но створили. Погляньте на код нижче. Додайте цей рядок коду безпосередньо під визовом add_settings_field у функції ініціалізації, котру ми визначили раніше у статті. Це можливо найлегший з усіх фрагментів, яким ви будете слідувати у цій статті:

1
// Finally, we register the fields with WordPress

2
register_setting(
3
	'general',
4
	'show_header'
5
);

Спробуйте - перевірте прапорець, клацніть 'Save Changes' та зверніть увагу, що коли сторінка оновлюється, параметр змінився. Зніміть прапорець, збережіть і дивіться, як він збережеться.

Saved OptionSaved OptionSaved Option

Досить просто, правда?

Додаємо Останні Два Параметри

Нам все ще потрібно представити параметри для перемикання видимості області вмісту та області нижнього колонтитулу. Це робиться майже так само, як ми налаштували опцію для перемикання заголовку.

По-перше, давайте визначимо поле для показу змісту. Це буде йти під першим визовом add_settings_field:

1
add_settings_field(
2
	'show_content',
3
	'Content',
4
	'sandbox_toggle_content_callback',
5
	'general',
6
	'general_settings_section',
7
	array(
8
		'Activate this setting to display the content.'
9
	)
10
);

Та давайте встановимо функцію зворотнього виклику:

1
function sandbox_toggle_content_callback($args) {
2
3
	$html = '<input type="checkbox" id="show_content" name="show_content" value="1" ' . checked(1, get_option('show_content'), false) . '/>'; 
4
	$html .= '<label for="show_content"> '  . $args[0] . '</label>'; 
5
	
6
	echo $html;
7
	
8
} // end sandbox_toggle_content_callback

Далі, давайте встановимо поле для показу нижнього колонтитулу:

1
add_settings_field(	
2
	'show_footer',						
3
	'Footer',				
4
	'sandbox_toggle_footer_callback',	
5
	'general',							
6
	'general_settings_section',			
7
	array(								
8
		'Activate this setting to display the footer.'
9
	)
10
);

І, також, встановимо зворотній виклик для цього поля:

1
function sandbox_toggle_footer_callback($args) {
2
	
3
	$html = '<input type="checkbox" id="show_footer" name="show_footer" value="1" ' . checked(1, get_option('show_footer'), false) . '/>'; 
4
	$html .= '<label for="show_footer"> '  . $args[0] . '</label>'; 
5
	
6
	echo $html;
7
	
8
} // end sandbox_toggle_footer_callback

Нарешті, давайте зареєструємо ці два нові поля з WordPress. Ці два виклики функцій йдуть до низу функції ініціалізації, що ми визначили раніше у статті.

1
register_setting(
2
	'general',
3
	'show_content'
4
);
5
6
register_setting(
7
	'general',
8
	'show_footer'
9
);

Остаточна версія functions.php має виглядати наступним чином:

1
<?php
2
3
/* ------------------------------------------------------------------------ *

4
 * Setting Registration

5
 * ------------------------------------------------------------------------ */ 
6
7
/**

8
 * Initializes the theme options page by registering the Sections,

9
 * Fields, and Settings.

10
 *

11
 * This function is registered with the 'admin_init' hook.

12
 */ 
13
add_action('admin_init', 'sandbox_initialize_theme_options');
14
function sandbox_initialize_theme_options() {
15
16
	// First, we register a section. This is necessary since all future options must belong to one. 

17
	add_settings_section(
18
		'general_settings_section',			// ID used to identify this section and with which to register options

19
		'Sandbox Options',					// Title to be displayed on the administration page

20
		'sandbox_general_options_callback',	// Callback used to render the description of the section

21
		'general'							// Page on which to add this section of options

22
	);
23
	
24
	// Next, we will introduce the fields for toggling the visibility of content elements.

25
	add_settings_field(	
26
		'show_header',						// ID used to identify the field throughout the theme

27
		'Header',							// The label to the left of the option interface element

28
		'sandbox_toggle_header_callback',	// The name of the function responsible for rendering the option interface

29
		'general',							// The page on which this option will be displayed

30
		'general_settings_section',			// The name of the section to which this field belongs

31
		array(								// The array of arguments to pass to the callback. In this case, just a description.

32
			'Activate this setting to display the header.'
33
		)
34
	);
35
	
36
	add_settings_field(	
37
		'show_content',						
38
		'Content',				
39
		'sandbox_toggle_content_callback',	
40
		'general',							
41
		'general_settings_section',			
42
		array(								
43
			'Activate this setting to display the content.'
44
		)
45
	);
46
	
47
	add_settings_field(	
48
		'show_footer',						
49
		'Footer',				
50
		'sandbox_toggle_footer_callback',	
51
		'general',							
52
		'general_settings_section',			
53
		array(								
54
			'Activate this setting to display the footer.'
55
		)
56
	);
57
	
58
	// Finally, we register the fields with WordPress

59
	register_setting(
60
		'general',
61
		'show_header'
62
	);
63
	
64
	register_setting(
65
		'general',
66
		'show_content'
67
	);
68
	
69
	register_setting(
70
		'general',
71
		'show_footer'
72
	);
73
	
74
} // end sandbox_initialize_theme_options

75
76
/* ------------------------------------------------------------------------ *

77
 * Section Callbacks

78
 * ------------------------------------------------------------------------ */ 
79
80
/**

81
 * This function provides a simple description for the General Options page. 

82
 *

83
 * It is called from the 'sandbox_initialize_theme_options' function by being passed as a parameter

84
 * in the add_settings_section function.

85
 */
86
function sandbox_general_options_callback() {
87
	echo '<p>Select which areas of content you wish to display.</p>';
88
} // end sandbox_general_options_callback

89
90
/* ------------------------------------------------------------------------ *

91
 * Field Callbacks

92
 * ------------------------------------------------------------------------ */ 
93
94
/**

95
 * This function renders the interface elements for toggling the visibility of the header element.

96
 * 

97
 * It accepts an array of arguments and expects the first element in the array to be the description

98
 * to be displayed next to the checkbox.

99
 */
100
function sandbox_toggle_header_callback($args) {
101
	
102
	// Note the ID and the name attribute of the element match that of the ID in the call to add_settings_field

103
	$html = '<input type="checkbox" id="show_header" name="show_header" value="1" ' . checked(1, get_option('show_header'), false) . '/>'; 
104
	
105
	// Here, we will take the first argument of the array and add it to a label next to the checkbox

106
	$html .= '<label for="show_header"> '  . $args[0] . '</label>'; 
107
	
108
	echo $html;
109
	
110
} // end sandbox_toggle_header_callback

111
112
function sandbox_toggle_content_callback($args) {
113
114
	$html = '<input type="checkbox" id="show_content" name="show_content" value="1" ' . checked(1, get_option('show_content'), false) . '/>'; 
115
	$html .= '<label for="show_content"> '  . $args[0] . '</label>'; 
116
	
117
	echo $html;
118
	
119
} // end sandbox_toggle_content_callback

120
121
function sandbox_toggle_footer_callback($args) {
122
	
123
	$html = '<input type="checkbox" id="show_footer" name="show_footer" value="1" ' . checked(1, get_option('show_footer'), false) . '/>'; 
124
	$html .= '<label for="show_footer"> '  . $args[0] . '</label>'; 
125
	
126
	echo $html;
127
	
128
} // end sandbox_toggle_footer_callback

129
130
?>

Теперь оновіть сторінку Загальні Налаштування і помітьте, що ви маєте всі три повністю функціональні прапорці.

Final OptionsFinal OptionsFinal Options

Читання API

Що хорошого у налаштуваннях, якщо ми не можемо скористатися ними у нашій темі або нашому плагіні? Ми повинні мати можливість зчитувати значення для того, щоб правильно керувати нашими новими параметрами.

Щоб це робити, нам потрібно використовувати функцію get_option. Ця функція приймає два аргументи (один обов'язковий, один необов'язковий):

  • Option ID – Цей аргумент є ID поля для значення, що ви намагаєтесь отримати. Аргумент є обов'язковим.
  • Default Option – Це значення функція поверне, якщо функція повертає пусте значення (таке, як у випадку, якщо параметр не знайдено у базі даних). Цей аргумент не обов'язковий.

Спочатку, давайте спробуємо перемикнути видимість заголовку. У шаблоні index, котрий ми створили раніше у цій статті, знайдіть елемент з ID header. Він має виглядати ось так:

1
<div id="header">
2
	<h1>Sandbox Header</h1>
3
</div><!-- /#header -->

Потім, давайте зробимо виклик get_option у контексті умови. Якщо умова має значення істина (тобто, параметр було вибрано на сторінці Загальні Налаштування), то елемент буде відображено; в іншому випадку елемент не відображатиметься.

1
<?php if(get_option('show_header')) { ?>
2
	<div id="header">
3
		<h1>Sandbox Header</h1>
4
	</div><!-- /#header -->
5
<?php } // end if ?>

Після цього перейдіть до сторінки Загальні Параметри, оберіть налаштування приховати елемент заголовка та оновіть вашу домашню сторінку. Елемент заголовку більше не повинен відображатися.

Тепер просто існує необхідність повторити процес також для елемента зміст і нижній колонтитул. Нам необхідно обернути елементи вмісту та колонтитула з умовами, яки обчислять результат визову get_option.

Погляньте:

1
<?php if(get_option('show_content')) { ?>
2
	<div id="content">
3
		<p>This is theme content.</p>
4
	</div><!-- /#content -->
5
<?php } // end if ?>

6
7
<?php if(get_option('show_footer')) { ?>
8
	<div id="footer">
9
		<p>&copy; <?php echo date('Y'); ?> All Rights Reserved.</p>
10
	</div><!-- /#footer -->
11
<?php } // end if ?>

Поверніться до сторінки Загальні Параметри, увімкніть кожен прапорець та оновіть сторінку теми. Ваші елементи сторінки мають кожен перемикатися незалежно один від одного.


Наступне, Сторінки Меню

Це все поки-що! Ми оглянули усі функції, необхідні для впровадження нових розділів, полів та параметрів у WordPress. Звісно, що ще є багато чого, що необхідно розглянути. 

У наступній статті ми поглянемо на те, як додати власні елементи меню до меню WordPress, і як ми можемо представити наші власні сторінки до панелі налаштувань WordPress.


Пов'язані ресурси

Ми розглянули багато матеріалу в цій статті. Ось посилання на все те, що ми використовували протягом всієї цієї статті.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.