Tema Customizer Kedelplade – Betingede muligheder, Børnetemaer og plugins

  1. 1. Introduktion til WordPress Theme Customizer
  2. 2. Interagerer med WordPress Theme Customizer
  3. 3. WordPress Theme Customizer Kedelplade
  4. 4. Udvidelse af WordPress Theme Customizer-kedelplade
  5. 5. I øjeblikket læser: Tema Customizer Kedelplade – Betingede muligheder, Børnetemaer og plugins

Indtil videre har vi set hvor enkelt det er at håndtere temaindstillinger ved hjælp af Theme Customizer Boilerplate og dens kroge. Som du sandsynligvis husker, var det vigtigste trin at tilslutte sig ’Thsp_cbp_options_array’ filterkrok og videregive den en række indstillinger, du vil bruge i dit tema.


Jeg er sikker på, at du allerede er fortrolig med WordPress-handling og filterkroge – Plugin API – og hvordan de fungerer, men bare i tilfælde af, her er en hurtig oversigt (ved hjælp af filterkroge som eksempel). Du kan definere din brugerdefinerede funktion og koble den til et eksisterende filter ved hjælp af add_filter-funktion:

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

Lad os fokusere på prioriteret argument. Dets standardværdi er 10, så hvis du ikke bruger et andet nummer, er det, hvad din funktions eksekveringsprioritet er. Sænk antallet, tidligere udføres din funktion. Så hvis du gør noget lignende:

// Tilføjelse af første meddelelse
funktion my_theme_add_first_message ($ indhold) {
$ indhold. = '

Første meddelelse

'; returnere $ indhold; } add_filter ('the_content', 'my_theme_add_first_message', 1); // Tilføjelse af anden meddelelse funktion my_theme_add_second_message ($ indhold) { $ indhold. = '

Anden meddelelse

'; returnere $ indhold; } add_filter ('the_content', 'my_theme_add_second_message', 2);

Når du ringer til_indholdsfunktionen i single.php, vises et andet skabelonindhold efterfulgt af første meddelelse efterfulgt af anden meddelelse. Ikke fordi det er deres rækkefølge i dette kodestykket, men på grund af parameteren til udførelsesprioritet. Tænk på kroge, som om det var snebold, der rullede ned ad bakken og plukker alle slags ting på vej.

Hvordan gælder dette for Theme Customizer Boilerplate?

Du kan koble dig ind ’Thsp_cbp_options_array’ fra dit temas funktion.php-fil ved hjælp af en brugerdefineret funktion (f.eks. my_theme_options_array) med prioriteret værdi indstillet til 1. Det betyder enhver anden funktion, der kobles til ’Thsp_cbp_options_array’ filterkrog vil gøre det EFTER my_theme_options_array-funktion, du allerede har defineret. Se på dette eksempel:

funktion my_theme_options_array () {
// Brug af hjælperfunktion for at få standard krævet kapacitet
$ thsp_cbp_capability = thsp_cbp_capability ();

$ optioner = matrix (
// Sektion ID
'my_theme_new_section' => matrix (

'eksisterende_sektion' => falsk,
'args' => matrix (
'title' => __ ('Ny sektion', 'my_theme_textdomain'),
'prioritet' => 10
),
'felter' => matrix (
/ *
* Radiofelt
* /
'my_radio_button' => matrix (
'setting_args' => matrix (
'default' => 'option-2',
'type' => 'mulighed',
'capability' => $ thsp_cbp_capability,
'transport' => 'opdater',
),
'control_args' => matrix (
'label' => __ ('My Radio Button', 'my_theme_textdomain'),
'type' => 'radio', // Radiostyring
'valg' => matrix (
'option-1' => matrix (
'label' => __ ('Option 1', 'my_theme_textdomain')
),
'option-2' => matrix (
'label' => __ ('Option 2', 'my_theme_textdomain')
),
'option-3' => matrix (
'label' => __ ('Option 3', 'my_theme_textdomain')
)
),
'prioritet' => 3
)
)
)
)
);

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

Dette tilføjer nyt afsnit til tematilpasseren med et felt i det, kaldet Min radioknap. Derefter udvikler du eller en anden et barnetema til dit tema og beslutter at beholde nyt afsnit, men i stedet for Min radioknap kan det være bedre at have Min afkrydsningsfelt. Let:

funktion my_child_theme_options_array ($ indstillinger) {
// Brug af hjælperfunktion for at få standard krævet kapacitet
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* Denne gang redigerer vi kun felter i my_theme_new_section i array-indstillingerne
* /
$ optioner ['my_theme_new_section'] ['field'] = matrix (
'my_checkbox_field' => matrix (
'setting_args' => matrix (
'default' => sandt,
'type' => 'mulighed',
'capability' => $ thsp_cbp_capability,
'transport' => 'opdater',
),
'control_args' => matrix (
'label' => __ ('Min checkbox', 'my_theme_textdomain'),
'type' => 'afkrydsningsfelt', // Afkrydsningsfelt til kontrolfelt
'prioritet' => 2
)
)
);

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

Bemærkede, at jeg ikke overførte parameteren $ optioner til my_theme_options_array og gjorde det i funktionen my_child_theme_options_array? Det skyldes, da jeg først tilsluttede mig ’Thsp_cbp_options_array’ hook Jeg ville tilsidesætte Theme Customizer Boilerplate-prøveindstillinger. Derefter, da jeg blev tilsluttet det igen fra mit barn-tema, ville jeg ikke helt slette mulighederne for overordnet tema, bare redigere dem let. Derfor messer jeg kun med $ optioner [‘my_theme_new_section’] [‘felter’], ikke hele $ optioner array.

Selvfølgelig kan du også koble dig ind ’Thsp_cbp_options_array’ filterkrog fra dit overordnede tema mere end én gang. Lad os sige, at du valgte ikke at tilføje plugin-territoriefunktioner til dit tema og lade plugins gøre, hvad de skulle. Nu vil du kun vise nogle Theme Customizer-indstillinger, hvis et bestemt plugin er aktivt. Igen, let:

funktion my_plugin_dependency_options_array ($ optioner) {
// Brug af hjælperfunktion for at få standard krævet kapacitet
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* Tilføjelse af kun min_plugin_afhængighed_sektion, hvis 'test-plugin.php' er aktiv
* /
if (is_plugin_active ('test-plugin / test-plugin.php')) {

$ optioner ['my_plugin_dependency_section'] = matrix (
'eksisterende_sektion' => falsk,
'args' => matrix (
'title' => __ ('Plugin-afhængighed', 'my_theme_textdomain'),
'prioritet' => 10
),
'felter' => matrix (
/ *
* Tekstfelt
* /
// Felt-ID
'new_text_field' => matrix (
'setting_args' => matrix (
'default' => __ ('', 'my_theme_textdomain'),
'type' => 'mulighed',
'capability' => $ thsp_cbp_capability,
'transport' => 'opdater',
),
'control_args' => matrix (
'label' => __ ('Viser kun om', 'my_theme_textdomain'),
'type' => 'tekst', // Tekstfeltkontrol
'prioritet' => 5
)
),
)
);

}

returner $ optioner;
}
add_filter ('thsp_cbp_options_array', 'my_plugin_afhængighed_options_array', 3);

Vil du udvikle en kernefunktionalitet plugin skal bruges til dit tema (som du burde)? Du kan koble dig ind ’Thsp_cbp_options_array’ fra en af ​​dine plugins filer også, på samme måde som du gør det fra et temas funktion.php-fil.

Don’t Go Option Crazy

Hver gang du tilføjer indstillinger til et tema, du udvikler, skal du holde et af WordPress ‘centrale principper – Beslutning ikke muligheder – i tankerne. Det er let at blive revet med og begynde at tilføje brugerindstillinger for alle mindre detaljer, som dit tema har, men det gør ikke nogen en fordel. Jeg håber, at disse få tricks, især tilføjelse af plugin-afhængige indstillinger, vil hjælpe med at holde dit temas indstillinger tælle så lave som muligt.

Når alt kommer til alt, hvis dit tema har muligheder for ting som enhver grænseradius for hvert enkelt element, er det ikke et tema, det er en WYSIWYG-editor og sandsynligvis ikke en stor et.

Du køber ikke en hvid skjorte, fordi du med en vis ekstra indsats kan omdanne den til en duk, du køber den, fordi du kan lide dens “whiteshirtness”. WordPress-temaer skal også være sådan, de skal præsentere indhold på en bestemt måde og ikke prøve at gøre alt på enhver tænkelig måde. Hvis du er en temaudvikler, er det dit job at sikre, at brugernes forventninger er, hvad de skal være.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Adblock
    detector