Theme Customizer Boilerplate – Villkorade alternativ, teman för barn och plugins

  1. 1. Introduktion till WordPress Theme Customizer
  2. 2. Interagera med WordPress Theme Customizer
  3. 3. WordPress Theme Customizer Boilerplate
  4. 4. Utöka WordPress Theme Customizer Boilerplate
  5. 5. Läser för tillfället: Theme Customizer Boilerplate – Villkorade alternativ, teman för barn och plugins

Hittills har vi sett hur enkelt det är att hantera temalternativ med Theme Customizer Boilerplate och dess krokar. Som du förmodligen minns var det viktigaste steget att ansluta sig till ’Thsp_cbp_options_array’ filterkrok och överföra den matris med alternativ du vill använda i ditt tema.


Jag är säker på att du redan är bekant med WordPress-action och filterkrokar – Plugin API – och hur de fungerar, men bara i fall, här är en snabb sammanfattning (med filterkrokar som exempel). Du kan definiera din anpassade funktion och ansluta den till ett befintligt filter med funktionen add_filter:

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

Låt oss fokusera på prioriteringsargument. Dess standardvärde är 10, så om du inte använder ett annat nummer är det vad din funktions exekveringsprioritet kommer att vara. Sänk antalet, tidigare utförs din funktion. Så om du gör något liknande:

// Lägg till första meddelandet
funktion my_theme_add_first_message ($ innehåll) {
$ innehåll. = '

Första meddelandet

'; returnera $ innehåll; } add_filter ('the_content', 'my_theme_add_first_message', 1); // Lägga till det andra meddelandet funktion my_theme_add_second_message ($ innehåll) { $ innehåll. = '

Andra meddelandet

'; returnera $ innehåll; } add_filter ('the_content', 'my_theme_add_second_message', 2);

När du ringer in_content-funktionen i single.php eller något annat mallinnehåll visas, följt av First Message, följt av Second Message. Inte för att det är deras ordning i det här kodavsnittet, utan på grund av parametern för körningsprioritet. Tänk på krokar som om det var snöbollar som rullar nerför backen och plockade alla slags saker på väg.

Hur gäller detta för Theme Customizer Boilerplate?

Du kan ansluta till ’Thsp_cbp_options_array’ från ditt temas function.php-fil med hjälp av en anpassad funktion (t.ex. my_theme_options_array) med prioritetsvärde inställt på 1. Det betyder alla andra funktioner som ansluts till ’Thsp_cbp_options_array’ filterkroken gör det EFTER my_theme_options_array-funktion som du redan har definierat. Titta på detta exempel:

funktion my_theme_options_array () {
// Använda hjälpfunktion för att få standardförmåga
$ thsp_cbp_capability = thsp_cbp_capability ();

$ optioner = array (
// Avsnitt ID
'my_theme_new_section' => matris (

'exist_section' => falsk,
'args' => array (
'title' => __ ('Nytt avsnitt', 'my_theme_textdomain'),
'prioritet' => 10
),
'fält' => array (
/ *
* Radiofält
* /
'my_radio_button' => matris (
'setting_args' => array (
'default' => 'option-2',
'typ' => 'alternativ',
'capability' => $ thsp_cbp_capability,
'transport' => 'uppdatera',
),
'control_args' => array (
'label' => __ ('My Radio Button', 'my_theme_textdomain'),
'type' => 'radio', // Radiokontroll
'choice' => array (
'option-1' => array (
'label' => __ ('Alternativ 1', 'my_theme_textdomain')
),
'option-2' => array (
'label' => __ ('Alternativ 2', 'my_theme_textdomain')
),
'option-3' => array (
'label' => __ ('Alternativ 3', 'my_theme_textdomain')
)
),
'prioritet' => 3
)
)
)
)
);

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

Detta kommer att lägga till nytt avsnitt till Theme Customizer med ett fält i det, som heter My Radio Button. Då utvecklar du eller någon annan ett barntema för ditt tema och bestämmer dig för att behålla nytt avsnitt, men istället för Min radioknapp kan det vara bättre att ha min kryssruta. Lätt:

funktion my_child_theme_options_array ($ optioner) {
// Använda hjälpfunktion för att få standardförmåga
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* Den här gången redigerar vi bara fält i my_theme_new_section i matrisen $
* /
$ optioner ['my_theme_new_section'] ['field'] = array (
'my_checkbox_field' => matris (
'setting_args' => array (
'default' => sant,
'typ' => 'alternativ',
'capability' => $ thsp_cbp_capability,
'transport' => 'uppdatera',
),
'control_args' => array (
'label' => __ ('Min checkbox', 'my_theme_textdomain'),
'type' => 'kryssruta', // Kontrollbox för fältkontroll
'prioritet' => 2
)
)
);

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

Märkte att jag inte skickade parametern $ optioner till my_theme_options_array och gjorde det i funktionen my_child_theme_options_array? Det beror på när jag först anslöt mig till ’Thsp_cbp_options_array’ hook Jag ville åsidosätta Theme Customizer Boilerplate provalternativ. Sedan, när jag anslöt mig till det igen från mitt barntema, ville jag inte ta bort alternativet för överordnatema helt enkelt, bara redigera dem något. Det är därför jag bara röra med $ optioner [“my_theme_new_section”] [“fält”], inte hela $ -alternativet.

Naturligtvis kan du också ansluta till ’Thsp_cbp_options_array’ filterkrok från ditt överordnade tema mer än en gång .. Låt oss säga att du valde att inte lägga till plugin-territoriefunktioner till ditt tema och låta plugins göra vad de ska. Nu vill du bara visa några Theme Customizer-alternativ om en viss plugin är aktiv. Återigen, enkelt:

funktion my_plugin_dependency_options_array ($ optioner) {
// Använda hjälpfunktion för att få standardförmåga
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* Lägg bara till my_plugin_dependency_section om 'test-plugin.php' är aktivt
* /
if (is_plugin_active ('test-plugin / test-plugin.php')) {

$ optioner ['my_plugin_dependency_section'] = matris (
'exist_section' => falsk,
'args' => array (
'title' => __ ('Plugin Dependency', 'my_theme_textdomain'),
'prioritet' => 10
),
'fält' => array (
/ *
* Textfält
* /
// Fält-ID
'new_text_field' => array (
'setting_args' => array (
'default' => __ ('', 'my_theme_textdomain'),
'typ' => 'alternativ',
'capability' => $ thsp_cbp_capability,
'transport' => 'uppdatera',
),
'control_args' => array (
'label' => __ ('Visar endast om', 'my_theme_textdomain'),
'type' => 'text', // Textfältkontroll
'prioritet' => 5
)
),
)
);

}

returnera $ optioner;
}
add_filter ('thsp_cbp_options_array', 'my_plugin_dependency_options_array', 3);

Vill utveckla en kärna funktionalitet plugin att användas med ditt tema (som du borde)? Du kan ansluta till ’Thsp_cbp_options_array’ från en av dina plugin-filer också, på samma sätt som du gör det från ett temas function.php-fil.

Gör inte alternativet galet

Varje gång du lägger till alternativ till ett tema du utvecklar måste du hålla en av WordPress kärnprinciper – Beslut inte alternativ – i åtanke. Det är lätt att bli bortdragen och börja lägga till användaralternativ för varje mindre detalj som ditt tema har, men det gör inte någon som är en tjänst. Jag hoppas att dessa få trick, särskilt att lägga till pluginberoende alternativ, kommer att hjälpa till att hålla ditt temas alternativ räkna så lågt som möjligt.

När allt kommer omkring, om ditt tema har alternativ för saker som varje gränseradie för varje enskilt element, är det inte ett tema, det är en WYSIWYG-redigerare och förmodligen inte en bra.

Du köper inte en vit skjorta eftersom du med lite extra ansträngning kan förvandla den till en duk, du köper den för att du gillar dess ”whiteshirtness”. WordPress-teman bör också vara så, de bör presentera innehåll på ett visst sätt, inte försöka göra allt på alla sätt som kan tänkas. Om du är en temautvecklare är det ditt jobb att se till att användarnas förväntningar är vad de borde vara.

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