Temos tinkinimo priemonės katilinė plokštė – sąlyginės parinktys, temos vaikams ir papildiniai

  1. 1. „WordPress“ temos tinkinimo priemonės įvadas
  2. 2. Sąveikauja su „WordPress“ temos tinkinimo priemone
  3. 3. „WordPress“ temos tinkinimo priemonės katilinė plokštė
  4. 4. „WordPress“ temos tinkinimo priemonės katilinės išplėtimas
  5. 5. Dabar skaitau: Temos tinkinimo priemonės katilinė plokštė – sąlyginės parinktys, temos vaikams ir papildiniai

Iki šiol matėme, kaip paprasta valdyti temos parinktis naudojant temos tinkinimo priemonės katilinę ir jos kabliukus. Kaip jūs turbūt prisimenate, svarbiausias žingsnis buvo užkabinimas „Thsp_cbp_options_array“ filtruokite kabliuką ir pateikite daugybę variantų, kuriuos norite naudoti savo temoje.


Aš tikiu, kad jūs jau esate susipažinęs su „WordPress“ veiksmais ir filtrų kabliukais – „Plugin API“ ir kaip jie veikia, tačiau tik tuo atveju, čia yra trumpas aprašymas (kaip filtro kabliukus kaip pavyzdį). Galite apibrėžti pasirinktinę funkciją ir prijungti ją prie esamo filtro naudodami funkciją „add_filter“:

add_filter ($ tag, $ function_to_add, $ prioritetas, $ elfogad_args);

Sutelkime dėmesį į prioritetinius argumentus. Numatytoji jo vertė yra 10, taigi, jei nenaudosite kito numerio, tai bus jūsų funkcijos vykdymo prioritetas. Mažinkite skaičių, tuo anksčiau jūsų funkcija bus vykdoma. Taigi, jei darote ką nors panašaus:

// Pridedama pirma žinutė
funkcija my_theme_add_first_message ($ turinys) {
$ content. = '

Pirma žinutė

'; grąžinti turinį; } add_filter ('the_content', 'my_theme_add_first_message', 1); // Antros žinutės pridėjimas funkcija my_theme_add_second_message ($ turinys) { $ content. = '

Antra žinutė

'; grąžinti turinį; } add_filter ('the_content', 'my_theme_add_second_message', 2);

Kai paskambinsite į funkciją_turinys, esančioje single.php, ar bus parodytas bet koks kitas šablono skelbimo turinys, po kurio bus rašoma Pirma žinutė, po to – Antra žinutė. Ne todėl, kad tokia yra jų tvarka šiame kodo fragmente, bet dėl ​​vykdymo prioriteto parametro. Pagalvokite apie kabliukus, tarsi jie būtų sniego gniūžtės, riedančios nuo kalno, rinkdamosi visokius daiktus.

Kaip tai taikoma temos tinkinimo priemonės katilo plokštei?

Galite užsikabinti „Thsp_cbp_options_array“ iš temos „function.php“ failo, naudodama pasirinktinę funkciją (pvz., „my_theme_options_array“), kurios prioriteto reikšmė yra 1. Tai reiškia, kad bet kuri kita funkcija, jungianti „Thsp_cbp_options_array“ filtro kabliukas tai atliks PO jūsų jau apibrėžtos funkcijos „my_theme_options_array“. Pažvelkite į šį pavyzdį:

funkcija my_theme_options_array () {
// Pagalbinės funkcijos naudojimas norimoms numatytoms galimybėms gauti
$ thsp_cbp_capability = thsp_cbp_capability ();

$ options = masyvas (
// Skyriaus ID
'my_theme_new_section' => masyvas (

'esama_sekcija' => klaidinga,
'args' => masyvas (
'title' => __ ('Nauja skiltis', 'mano_theme_textdomenas'),
'prioritetas' => 10
),
'laukai' => masyvas (
/ *
* Radijo laukas
* /
'my_radio_button' => masyvas (
'setting_args' => masyvas (
'numatytasis' => '2 variantas',
'type' => 'option',
'pajėgumas' => $ thsp_cbp_capability,
'transportas' => 'atnaujinti',
),
'control_args' => masyvas (
'label' => __ ('My Radio Button', 'my_theme_textdomain'),
'type' => 'radio', // Radijo valdymas
'pasirinkimai' => masyvas (
'variantas-1' => masyvas (
'label' => __ ('1 parinktis', 'my_theme_textdomain')
),
'variantas-2' => masyvas (
'label' => __ ('2 parinktis', 'my_theme_textdomain')
),
'variantas-3' => masyvas (
'label' => __ ('3 parinktis', 'my_theme_textdomain')
)
),
'prioritetas' => 3
)
)
)
)
);

grąžinti $ opcionus;
}
add_filter ('thsp_cbp_options_array', 'my_theme_options_array', 1);

Tai pridės naują skyrių prie temos pritaikymo priemonės su vienu lauku, vadinamu My Radio Button. Tuomet jūs ar kas nors kitas parengia jūsų temai skirtą vaikišką temą ir nusprendžia palikti naują skyrių, tačiau vietoj „My Radio Button“ galbūt geriau turėti Mano žymės langelį. Lengva:

funkcija my_child_theme_options_array ($ parinkčių) {
// Pagalbinės funkcijos naudojimas norimoms numatytoms galimybėms gauti
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* Šį kartą redaguojame tik „my_theme_new_section“ laukus, esančius „$ options“ masyve
* /
$ parinktys ['my_theme_new_section'] ['laukai'] = masyvas (
'my_checkbox_field' => masyvas (
'setting_args' => masyvas (
'numatytasis' => tiesa,
'type' => 'option',
'pajėgumas' => $ thsp_cbp_capability,
'transportas' => 'atnaujinti',
),
'control_args' => masyvas (
'label' => __ ('My Checkbox', 'my_theme_textdomain'),
'type' => 'žymimasis laukelis', // Kontrolinio langelio lauko valdymas
'prioritetas' => 2
)
)
);

grąžinti $ opcionus;
}
add_filter ('thsp_cbp_options_array', 'my_child_theme_options_array', 2);

Pastebėjote, kad aš neperdaviau parametro $ parinkčių „my_theme_options_array“ ir padariau tai naudodamas „my_child_theme_options_array“ funkciją? Taip yra todėl, kad kai aš pirmą kartą užsikabinau „Thsp_cbp_options_array“ kabliukas Norėjau nepaisyti „Theme Customizer“ katilinės plokščių pavyzdžių parinkčių. Tada, kai vėl prisikaupiau prie savo vaiko temos, nenorėjau visiškai ištrinti tėvystės temos parinkčių, tik šiek tiek jas redagavau. Štai kodėl aš jaudinuosi tik su $ galimybėmis [‘my_theme_new_section’] [‘laukai’], o ne su visu $ parinkčių masyvu..

Žinoma, jūs taip pat galite užsikabinti „Thsp_cbp_options_array“ ne vieną kartą filtruokite kabliuką iš savo pagrindinės temos. Tarkime, kad jūs nepridėjote papildinių teritorijos funkcijų prie savo temos ir leisite papildiniams daryti tai, kas jiems numatyta. Dabar norite parodyti kai kurias temos tinkinimo priemonės parinktis tik tuo atveju, jei aktyvus tam tikras papildinys. Vėlgi, lengva:

funkcija my_plugin_dependency_options_array ($ parinkčių) {
// Pagalbinės funkcijos naudojimas norimoms numatytoms galimybėms gauti
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* „My_plugin_dependency_section“ pridėjimas tik tada, jei aktyvus „test-plugin.php“
* /
if (is_plugin_active ('test-plugin / test-plugin.php')) {

$ options ['my_plugin_dependency_section'] = masyvas (
'esama_sekcija' => klaidinga,
'args' => masyvas (
'title' => __ ('Plugin priklausomybė', 'my_theme_textdomain'),
'prioritetas' => 10
),
'laukai' => masyvas (
/ *
* Teksto laukas
* /
// Lauko ID
'new_text_field' => masyvas (
'setting_args' => masyvas (
'numatytasis' => __ ('', 'my_theme_textdomain'),
'type' => 'option',
'pajėgumas' => $ thsp_cbp_capability,
'transportas' => 'atnaujinti',
),
'control_args' => masyvas (
'label' => __ ('Parodo tik jei', 'my_theme_textdomain'),
'type' => 'text', // Teksto lauko valdymas
'prioritetas' => 5
)
),
)
);

}

grąžinti $ opcionus;
}
add_filter ('thsp_cbp_options_array', 'my_plugin_dependency_options_array', 3);

Norite sukurti a pagrindinio funkcionalumo papildinys naudoti kaip savo temą (kaip turėtum)? Galite užsikabinti „Thsp_cbp_options_array“ iš vieno jūsų papildinio failų taip pat, kaip tai darytumėte iš temos „function.php“ failo.

Negalima eiti iš proto

Kiekvieną kartą pridėdami pasirinktos temos parinkčių turite išlaikyti vieną iš pagrindinių „WordPress“ principų – Sprendimas, o ne galimybės – omenyje. Nesunku nugrimzti ir pradėti pridėti vartotojo parinkčių kiekvienai smulkiai jūsų temai, tačiau tai niekam nepadeda. Tikiuosi, kad šios kelios gudrybės, ypač pridedamos nuo įskiepių priklausančios parinktys, padės išlaikyti jūsų temos parinkčių skaičių kaip įmanoma mažesnį.

Galų gale, jei jūsų temoje yra parinkčių tokiems dalykams kaip kiekvieno elemento kiekvieno kraštinio spindulys, tai nėra tema, tai WYSIWYG redaktorius ir tikriausiai nėra puikus..

Neperkate baltų marškinėlių, nes tam tikromis papildomomis pastangomis galite juos paversti staltiese, o jūs perkate, nes jums patinka jų „baltumas“. „WordPress“ temos taip pat turėtų būti panašios, jos turėtų pateikti turinį tam tikru būdu, o ne bandyti daryti viską, kaip tik įmanoma. Jei esate temos kūrėjas, jūsų darbas yra įsitikinti, kad vartotojo lūkesčiai yra tokie, kokie jie turėtų būti.

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