Тема персонализатор котел – Условни опции, Детски теми и приставки

  1. 1. Въведение в персонализатора на теми WordPress
  2. 2. Взаимодействие с персонализатор на теми за WordPress
  3. 3. WordPress Тема за персонализиране на котлона
  4. 4. Удължаване на котлона за персонализиране на темата за WordPress
  5. 5. В момента четете: Тема персонализатор котел – Условни опции, Детски теми и приставки

Досега видяхме колко лесно е да боравите с опциите за теми, като използвате тематичния котел на котлона и неговите куки. Както вероятно си спомняте, най-важната стъпка беше свързването “Thsp_cbp_options_array” кука за филтриране и преминаване на масив от опции, които искате да използвате във вашата тема.


Сигурен съм, че вече сте запознати с действията на WordPress и куките за филтри – Plugin API – и как те работят, но за всеки случай ето бързо резюме (използвайте филтърни куки като пример). Можете да дефинирате вашата персонализирана функция и да я закачите в съществуващ филтър с помощта на add_filter функция:

add_filter ($ tag, $ function_to_add, $ приоритет, $ accept_args);

Нека се съсредоточим върху аргумента за приоритет. Стойността му по подразбиране е 10, така че ако не използвате друго число, това ще бъде приоритетът за изпълнение на функцията ви. Намалете числото, по-рано вашата функция се изпълнява. Така че, ако направите нещо подобно:

// Добавяне на първо съобщение
функция my_theme_add_first_message ($ съдържание) {
$ съдържание. = '

Първо съобщение

"; върнете $ съдържание; } add_filter ('the_content', 'my_theme_add_first_message', 1); // Добавяне на второ съобщение функция my_theme_add_second_message ($ съдържание) { $ съдържание. = '

Второ съобщение

"; върнете $ съдържание; } add_filter ('the_content', 'my_theme_add_second_message', 2);

Когато извикате функцията_content в single.php или който и да е друг шаблон за съдържание на шаблон, ще бъде показано, последвано от Първо съобщение, последвано от Второ съобщение. Не защото това е техният ред в този кодов фрагмент, а заради параметъра за приоритет на изпълнение. Помислете за куки, сякаш са снежни топки, които се търкалят по хълма, избират всякакви неща по пътя си.

Как това се отнася за тематичния персонализатор на котлона?

Можете да се закачите “Thsp_cbp_options_array” от файла function.php на вашата тема, използвайки персонализирана функция (напр. my_theme_options_array) с стойност на приоритет, зададена на 1. Това означава всяка друга функция, която се свързва в “Thsp_cbp_options_array” куката на филтъра ще го направи СЛЕД my_theme_options_array функция, която вече сте дефинирали. Разгледайте този пример:

функция my_theme_options_array () {
// Използване на помощна функция, за да получите необходимата по подразбиране способност
$ thsp_cbp_capability = thsp_cbp_capability ();

$ options = масив (
// Идент. № на раздела
'my_theme_new_section' => масив (

'съществуваща_секция' => невярно,
'args' => масив (
'title' => __ ('Нова секция', 'my_theme_textdomain'),
'приоритет' => 10
),
'polja' => масив (
/ *
* Радио поле
* /
'my_radio_button' => масив (
'setting_args' => масив (
'по подразбиране' => 'опция-2',
'type' => 'опция',
'capability' => $ thsp_cbp_capability,
'транспорт' => 'опресняване',
),
'control_args' => масив (
'label' => __ ('My Radio Button', 'my_theme_textdomain'),
'type' => 'radio', // Радиоуправление
'choices' => масив (
'option-1' => масив (
'label' => __ ('Вариант 1', 'my_theme_textdomain')
),
'option-2' => масив (
'label' => __ ('Вариант 2', 'my_theme_textdomain')
),
'option-3' => масив (
'label' => __ ('Вариант 3', 'my_theme_textdomain')
)
),
'приоритет' => 3
)
)
)
)
);

връщане на $ опции;
}
add_filter ('thsp_cbp_options_array', 'my_theme_options_array', 1);

Това ще добави Нова секция към персонализатора на теми с едно поле в нея, наречено My Radio Button. Тогава вие или някой друг разработва детска тема за вашата тема и решава да запази Нова секция, но вместо My Radio Button може да е по-добре да имате My Checkbox. Лесно:

функция my_child_theme_options_array ($ опции) {
// Използване на помощна функция, за да получите необходимата по подразбиране способност
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* Този път редактираме само полета в my_theme_new_section в масива $ options
* /
$ options ['my_theme_new_section'] ['polja'] = масив (
'my_checkbox_field' => масив (
'setting_args' => масив (
'default' => true,
'type' => 'опция',
'capability' => $ thsp_cbp_capability,
'транспорт' => 'опресняване',
),
'control_args' => масив (
'label' => __ ('Моята отметка', 'my_theme_textdomain'),
'type' => 'checkbox', // Управление на полето за отметка
'приоритет' => 2
)
)
);

връщане на $ опции;
}
add_filter ('thsp_cbp_options_array', 'my_child_theme_options_array', 2);

Забелязах, че не предадох параметъра $ options на my_theme_options_array и го направих във функцията my_child_theme_options_array? Това е така, защото когато за пръв път се включих “Thsp_cbp_options_array” кука Исках да замени опциите за пример на тема за персонализиране на котела. След това, когато отново се закачих в него от детската си тема, не исках да изтрия напълно опциите на родителската тема, а само леко ги редактирам. Ето защо се забърквам само с $ options [‘my_theme_new_section’] [‘polja’], а не с целия масив $ options.

Разбира се, можете и да се закачите “Thsp_cbp_options_array” филтрирайте куката от родителската си тема повече от веднъж. Нека да кажем, че сте избрали да не добавяте функции на територията на приставките към своята тема и оставете плъгините да правят това, което трябва. Сега искате да покажете някои опции за персонализиране на теми, само ако определен плъгин е активен. Отново лесно:

функция my_plugin_dependency_options_array ($ опции) {
// Използване на помощна функция, за да получите необходимата по подразбиране способност
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* Добавям my_plugin_dependency_section само ако е активиран „test-plugin.php“
* /
if (is_plugin_active ('test-plugin / test-plugin.php')) {

$ options ['my_plugin_dependency_section'] = масив (
'съществуваща_секция' => невярно,
'args' => масив (
'title' => __ ('Зависимост на приставката', 'my_theme_textdomain'),
'приоритет' => 10
),
'polja' => масив (
/ *
* Текстово поле
* /
// Идент. № на полето
'new_text_field' => масив (
'setting_args' => масив (
'default' => __ ('', 'my_theme_textdomain'),
'type' => 'опция',
'capability' => $ thsp_cbp_capability,
'транспорт' => 'опресняване',
),
'control_args' => масив (
'label' => __ ('Показва само ако', 'my_theme_textdomain'),
'type' => 'text', // Контрол на текстовото поле
'приоритет' => 5
)
),
)
);

}

връщане на $ опции;
}
add_filter ('thsp_cbp_options_array', 'my_plugin_dependency_options_array', 3);

Искате да развиете основен функционален плъгин да се използва с вашата тема (както трябва)? Можете да се закачите “Thsp_cbp_options_array” от един от файловете на вашия плъгин също, по същия начин, по който бихте го направили от файл function.php на тема.

Не правете вариант луд

Всеки път, когато добавяте опции към тема, която разработвате, трябва да спазвате един от основните принципи на WordPress – Решение не Опции – се има предвид. Лесно се увлечете и започнете да добавяте потребителски опции за всеки незначителен детайл, който има вашата тема, но това не прави никой услуга. Надявам се, че тези няколко трика, особено добавянето на опции, зависими от плъгини, ще ви помогнат да запазите броя на възможностите на вашата тема възможно най-ниско.

В края на краищата, ако темата ви има опции за неща като всеки радиус на границата на всеки един елемент, това не е тема, тя е редактор на WYSIWYG и вероятно не е страхотна.

Не купувате бяла риза, защото с някои допълнителни усилия можете да я трансформирате в покривка за маса, а я купувате, защото харесвате нейната „бялост“. Темите на WordPress също трябва да бъдат такива, те трябва да представят съдържание по определен начин, а не да се опитват да правят всичко по възможно най-разбираемия начин. Ако сте разработчик на тема, ваша работа е да се уверите, че очакванията на потребителите са това, което трябва да бъдат.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map