Повна Інструкція по WordPress Settings API, Частина 2: Розділи, Поля і Налаштування
() 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.
- Поля - це самостійні параметри, що з'являються на сторінках меню. Поля відповідають дійсним елементам на екрані. Тобто, поле управляється текстовим полем, радіо перемикачем, прапорцем, і т. д. Поля представляють значення, що зберігається в базі даних WordPress.
- Розділи - це логічне згрупування полів. Кожного разу, коли ви працюєте із декількома полями, швидше за все ви збираєтеся згрупувати споріднені параметри разом - Розділи представляють таке групування. Крім того, якщо ваша робота включає в себе декілька сторінок адміністрування, кожен розділ часто відповідає своїй окремій сторінці меню (хоча, ви можете додати їх до існуючих розділів).
- Налаштування реєструються після того, як ви визначили обидва Поля та Розділи. Думайте про Налаштування як про поєднання Полів і Розділів, до якого вони належать.
Зараз не хвилюйтеся, якщо вам до цих пір щось незрозуміло, про будь-який з основних компонентів. Ми збираємося глибоко поглянути на кожен компонент, поряд зі зразком вихідного коду, який зв'яже все до купи.
Пісочниця для Наших Налаштувань
Для того, щоб розпочати програмування із 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>© <?php echo date('Y'); ?> All Rights Reserved.</p> |
18 |
</div><!-- /#footer --> |
19 |
|
20 |
</body>
|
21 |
</html>
|
Зверніть увагу, що вищезазначена розмітка надзвичайно проста і я не рекомендую використовувати її як основу для розробки тем. Вона приведена спеціально для цієї серії статей і просто є засобом, за допомогою якого ми будемо зчитувати значення з Settings API.
На екрані адміністрування Теми, оновіть сторінку і ви маєте побачити нову тему Sandbox, що з'явилась. Давайте, активуйте її.

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



Ви можете додати цей розділ до будь-яких сторінок в меню Налаштування. У наведеному вище прикладі ми вже пройшли "Загальні", як останній параметр у 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" та описом поруч прапорця.



На жаль, вона поки що фактично не зберігає значення в базу даних.
Реєстрування Наших Налаштувань
Для того, щоб наші поля для реально збереглися до бази даних, ми повинні зареєструвати їх за допомогою 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' та зверніть увагу, що коли сторінка оновлюється, параметр змінився. Зніміть прапорець, збережіть і дивіться, як він збережеться.



Досить просто, правда?
Додаємо Останні Два Параметри
Нам все ще потрібно представити параметри для перемикання видимості області вмісту та області нижнього колонтитулу. Це робиться майже так само, як ми налаштували опцію для перемикання заголовку.
По-перше, давайте визначимо поле для показу змісту. Це буде йти під першим визовом 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 |
?>
|
Теперь оновіть сторінку Загальні Налаштування і помітьте, що ви маєте всі три повністю функціональні прапорці.



Читання 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>© <?php echo date('Y'); ?> All Rights Reserved.</p> |
10 |
</div><!-- /#footer --> |
11 |
<?php } // end if ?> |
Поверніться до сторінки Загальні Параметри, увімкніть кожен прапорець та оновіть сторінку теми. Ваші елементи сторінки мають кожен перемикатися незалежно один від одного.
Наступне, Сторінки Меню
Це все поки-що! Ми оглянули усі функції, необхідні для впровадження нових розділів, полів та параметрів у WordPress. Звісно, що ще є багато чого, що необхідно розглянути.
У наступній статті ми поглянемо на те, як додати власні елементи меню до меню WordPress, і як ми можемо представити наші власні сторінки до панелі налаштувань WordPress.
Пов'язані ресурси
Ми розглянули багато матеріалу в цій статті. Ось посилання на все те, що ми використовували протягом всієї цієї статті.