Theme Customizer Kjeleplate – Betingede alternativer, temaer og plugins for barn

  1. 1. Introduksjon til WordPress Theme Customizer
  2. 2. Samhandler med WordPress Theme Customizer
  3. 3. WordPress Theme Customizer Kjeleplate
  4. 4. Utvide WordPress Theme Customizer Boilerplate
  5. 5. Leser for øyeblikket: Theme Customizer Kjeleplate – Betingede alternativer, temaer og plugins for barn

Så langt har vi sett hvor enkelt det er å håndtere temalternativer ved å bruke Theme Customizer Boilerplate og krokene. Som du sikkert husker, var det viktigste trinnet å koble seg inn ‘Thsp_cbp_options_array’ filterkrok og gi den en rekke alternativer du vil bruke i temaet.


Jeg er sikker på at du allerede er kjent med WordPress-handlinger og filterkroker – Plugin API – og hvordan de fungerer, men bare i tilfelle, her er en rask oppsummering (bruker filterkroker som eksempel). Du kan definere din tilpassede funksjon og koble den til et eksisterende filter ved å bruke add_filter-funksjonen:

add_filter ($ tag, $ function_to_add, $ prioritet, $ accept_args);

La oss fokusere på prioritert argument. Standardverdien er 10, så hvis du ikke bruker et annet nummer, er det utførelsesprioriteten til funksjonen din. Senk tallet, tidligere blir funksjonen din utført. Så hvis du gjør noe som dette:

// Legger til første melding
funksjon my_theme_add_first_message ($ content) {
$ innhold. = '

Første melding

'; returner $ innhold; } add_filter ('the_content', 'my_theme_add_first_message', 1); // Legger til andre melding funksjon my_theme_add_second_message ($ content) { $ innhold. = '

Andre melding

'; returner $ innhold; } add_filter ('the_content', 'my_theme_add_second_message', 2);

Når du ringer innholdsfunksjonen i single.php, eller et annet malinnhold vises innhold, etterfulgt av First Message, etterfulgt av Second Message. Ikke fordi det er deres rekkefølge i dette kodebiten, men på grunn av parameter for utførelsesprioritet. Tenk på kroker som om det var snøballer som ruller nedover bakken og plukket alle slags ting på vei.

Hvordan gjelder dette for Theme Customizer Boilerplate?

Du kan koble deg inn ‘Thsp_cbp_options_array’ fra temaets function.php-fil, ved hjelp av en tilpasset funksjon (f.eks. my_theme_options_array) med prioritert verdi satt til 1. Det betyr enhver annen funksjon som kobles til ‘Thsp_cbp_options_array’ filterkroken vil gjøre det ETTER my_theme_options_array-funksjonen du allerede har definert. Ta en titt på dette eksemplet:

funksjon my_theme_options_array () {
// Bruke hjelperfunksjon for å få standard nødvendig kapasitet
$ thsp_cbp_capability = thsp_cbp_capability ();

$ opsjoner = matrise (
// Seksjons-ID
'my_theme_new_section' => matrise (

'eksisterende_seksjon' => usant,
'args' => matrise (
'title' => __ ('Ny seksjon', 'my_theme_textdomain'),
'prioritet' => 10
),
'felt' => matrise (
/ *
* Radiofelt
* /
'my_radio_button' => matrise (
'setting_args' => matrise (
'default' => 'alternativ-2',
'type' => 'alternativ',
'capability' => $ thsp_cbp_capability,
'transport' => 'oppdater',
),
'control_args' => matrise (
'label' => __ ('My Radio Button', 'my_theme_textdomain'),
'type' => 'radio', // Radiokontroll
'valg' => matrise (
'option-1' => matrise (
'label' => __ ('Alternativ 1', 'my_theme_textdomain')
),
'option-2' => matrise (
'label' => __ ('Alternativ 2', 'my_theme_textdomain')
),
'option-3' => matrise (
'label' => __ ('Alternativ 3', 'my_theme_textdomain')
)
),
'prioritet' => 3
)
)
)
)
);

returner $ opsjoner;
}
add_filter ('thsp_cbp_options_array', 'my_theme_options_array', 1);

Dette vil legge til New Section til Theme Customizer med ett felt i det, kalt My Radio Button. Da utvikler du eller noen andre et barnetema for temaet ditt og bestemmer deg for å beholde New Section, men i stedet for Min radioknapp kan det være bedre å ha My Checkbox. Lett:

funksjon my_child_theme_options_array ($ alternativer) {
// Bruke hjelperfunksjon for å få standard nødvendig kapasitet
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* Denne gangen redigerer vi bare felt i my_theme_new_section i $ -alternativet
* /
$ optioner ['my_theme_new_section'] ['field'] = matrise (
'my_checkbox_field' => matrise (
'setting_args' => matrise (
'default' => sant,
'type' => 'alternativ',
'capability' => $ thsp_cbp_capability,
'transport' => 'oppdater',
),
'control_args' => matrise (
'label' => __ ('My Checkbox', 'my_theme_textdomain'),
'type' => 'avkrysningsrute', // Kontroll av avkrysningsfelt
'prioritet' => 2
)
)
);

returner $ opsjoner;
}
add_filter ('thsp_cbp_options_array', 'my_child_theme_options_array', 2);

Merket at jeg ikke sendte parameteren $ options til my_theme_options_array og gjorde det i my_child_theme_options_array-funksjonen? Det er fordi når jeg først ble koblet til ‘Thsp_cbp_options_array’ hook Jeg ville overstyre Theme Customizer Boilerplate eksempelalternativer. Da jeg koblet til det igjen fra barnetemaet mitt, ville jeg ikke slette alternativene for overordnede temaer, bare redigere dem litt. Det er grunnen til at jeg bare tuller med $ -opsjoner [‘my_theme_new_section’] [‘felt’], ikke hele $ -alternativet.

Selvfølgelig kan du også koble deg inn ‘Thsp_cbp_options_array’ filterkrok fra foreldertemaet mer enn en gang .. La oss si at du valgte å ikke legge til funksjoner for plugin-territorium til temaet ditt, og la plugins gjøre det de skal. Nå vil du bare vise noen Theme Customizer-alternativer hvis en viss plugin er aktiv. Igjen, enkelt:

funksjon my_plugin_dependency_options_array ($ alternativer) {
// Bruke hjelperfunksjon for å få standard nødvendig kapasitet
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* Bare legge til min_plugin_avhengighet_seksjon hvis 'test-plugin.php' er aktiv
* /
if (is_plugin_active ('test-plugin / test-plugin.php')) {

$ options ['my_plugin_dependency_section'] = matrise (
'eksisterende_seksjon' => usant,
'args' => matrise (
'title' => __ ('Plugin Dependency', 'my_theme_textdomain'),
'prioritet' => 10
),
'felt' => matrise (
/ *
* Tekstfelt
* /
// Felt-ID
'new_text_field' => matrise (
'setting_args' => matrise (
'default' => __ ('', 'my_theme_textdomain'),
'type' => 'alternativ',
'capability' => $ thsp_cbp_capability,
'transport' => 'oppdater',
),
'control_args' => matrise (
'label' => __ ('Viser bare om', 'my_theme_textdomain'),
'type' => 'tekst', // Tekstfeltkontroll
'prioritet' => 5
)
),
)
);

}

returner $ opsjoner;
}
add_filter ('thsp_cbp_options_array', 'my_plugin_dependency_options_array', 3);

Vil utvikle en kjerne funksjonalitet plugin som skal brukes med temaet ditt (som du burde)? Du kan koble deg inn ‘Thsp_cbp_options_array’ fra en av plugin-filene dine, på samme måte som du gjør det fra et tema’s function.php-fil.

Ikke gå alternativet gal

Hver gang du legger til alternativer til et tema du utvikler, trenger du å beholde et av WordPresss kjerneprinsipper – Beslutning ikke Opsjoner – i tankene. Det er lett å bli revet med og begynne å legge til brukeralternativer for hver minste detalj temaet ditt har, men det gjør ikke noen til fordel. Jeg håper at disse få triksene, spesielt ved å legge til plugin-avhengige alternativer, vil bidra til å holde alternativene til temaet ditt så lave som mulig.

Når alt kommer til alt, hvis temaet ditt har alternativer for ting som hver grensradius for hvert enkelt element, er det ikke et tema, det er en WYSIWYG-redigerer og sannsynligvis ikke en flott et.

Du kjøper ikke en hvit skjorte fordi du med litt ekstra krefter kan forvandle den til en duk, du kjøper den fordi du liker dens “whiteshirtness”. WordPress-temaer skal være sånn også, de skal presentere innhold på en viss måte, ikke prøve å gjøre alt på alle måter som kan tenkes. Hvis du er en temautvikler, er det din jobb å sørge for at brukerens forventninger er hva de skal være.

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