WordPressi teema kohandaja katlaplaat

WordPressi teema kohandaja katlaplaat
  1. 1. Sissejuhatus WordPressi teema kohandajasse
  2. 2. Suhtlemine WordPressi teema kohandajaga
  3. 3. Praegu loeb: WordPressi teema kohandaja katlaplaat
  4. 4. WordPressi teema kohandaja boileri laiendamine
  5. 5. Teema kohandaja katlaplaat – tingimuslikud valikud, alamteemad ja pistikprogrammid

Värskendus: seda artiklit on redigeeritud 19. veebruaril 2013, et kajastada teema kohandaja boileri muutusi.


Loodetavasti lugesite ja saate teema Kohandaja seeria kahte esimest postitust – WordPressi teema kohandaja sissejuhatus ja teemakohandajaga suhtlemine. Nüüd on aeg liikuda põhikursusele ja hakata kokku panema teemakohandaja katlaplaati, mida saate kasutada oma teemades. See postitus sisaldab mõnda pikka koodiplokki, nii et pöörake tähelepanu sisemistele kommentaaridele.

Märge: Kui eelistaksite lihtsalt katlaplaati kohe kasutada, saate selle Githubist alla laadida ja väljade $ options massiivi muuta, ühendades filtri „thsp_cbp_options_array”.

Mida me loome

Teema Kohandaja katelplaadi kataloogistruktuur

Teema Kohandaja katelplaadi kataloogistruktuur

  • kohandaja.php – See on peamine teema kohandaja katteplaadifail, see lisab jaotisi, sätteid ja juhtelemente, kasutades andmeid suvandite massiivi
  • kohandatud-controls.php – Kohandatud juhtnupud ja tegevuskonks, mis võimaldab teil lisada oma kohandatud juhtelemente
  • helpers.php – abistajafunktsioonid, mida kasutatakse teemavalikute, vaikesätete jne hankimiseks.
  • options.php – Näidisvalikud ja filtrikonks, mis võimaldab redigeerida suvandite massiivi ja kasutada oma välju
  • kohandaja-controls.css – Kujutise asendamiseks kasutatav CSS-i põhiline CSS

Kogu idee on see, et oleks võimalik kopeerida need failid oma teemakataloogi alamkataloogi, lisada failid customizer.php oma funktsioonidestphph ja muuta kõike, mis teile meeldib, sealhulgas ja eriti suvandite massiivi, kasutades teema Customizer Boilerplate konksu (selgitatud 4. osas). Värskendus: Varem redigeerisite lihtsalt options.php, kuid konksude kasutamine muudab asjad palju puhtamaks.

Kasutagem nüüd tõelist näidet – me lisame teksti juhtelemendi uude jaotisesse teema kohandaja. Massiiv paigutatakse abistajafunktsiooni ja tagasituleku korral on sellele rakendatud filter. Nii saate lapseteema või pistikprogrammi kaudu lisada rohkem võimalusi. Siin see on:

/ **
* Abistaja funktsioon, mis sisaldab mitmesuguseid teemavalikuid.
*
* @return array $ options Massiivi teemavalikud
* @kasutab kohandaja / helpers.php-s määratletud thsp_get_theme_customizer_fields ()
* /
funktsioon thsp_get_theme_customizer_fields () {

/ *
* Abistajafunktsiooni kasutamine vaikefunktsiooni saamiseks
* /
$ required_capability = thsp_settings_page_capability ();

$ options = array (


// Jao ID
'new_customizer_section' => massiiv (

/ *
* Kontrollime, kas see on olemasolev jaotis
* või uus, mis tuleb registreerida
* /
'olemasolev_sektsioon' => vale,
/ *
* Jaotisega seotud argumendid
* Codex - http://codex.wordpress.org/Class_Reference/WP_Customize_Manager/add_section
* /
'args' => massiiv (
'title' => __ ('Uus jaotise pealkiri', 'my_theme_textdomain'),
'description' => __ ('Uus jaotise kirjeldus', 'my_theme_textdomain'),
'prioriteet' => 10
),

/ *
* 'väljade' massiiv sisaldab kõiki välju, mis peavad olema
* lisatud sellesse jaotisse
* /
'väljad' => massiiv (

/ *
* ==========
* ==========
* Tekstiväli
* ==========
* ==========
* /
// Välja ID
'new_text_field' => massiiv (
/ *
* Seotud argumentide seadmine
* Codex - http://codex.wordpress.org/Class_Reference/WP_Customize_Manager/add_setting
* /
'setting_args' => massiiv (
'vaikimisi' => __ ('Vaikimisi teksti väärtus', 'my_theme_textdomain'),
'type' => 'variant',
'võime' => nõutav_võimsus,
'transport' => 'värskenda',
'sanitize_callback' => 'thsp_sanitize_cb',
),
/ *
* Kontrollige seotud argumente
* Codex - http://codex.wordpress.org/Class_Reference/WP_Customize_Manager/add_control
* /
'control_args' => massiiv (
'label' => __ ('Uus teksti juhtimissilt', 'my_theme_textdomain'),
'type' => 'text', // tekstivälja juhtimine
'prioriteet' => 1
)
)

)

),

);

/ *
* 'thsp_customizer_options' filtrikonks võimaldab teil seda teha
* lisage / eemaldage mõni neist võimalustest lapseteemast
* /
tagasta rakendused_filtrid ('thsp_customizer_options', $ valikud);

}

Värskendus: Massiiv jääb samaks, kuid nüüd saate edastada valikute massiivi ka filtrikonksule, vt lähemalt 4. osast.

Paistab esmapilgul keeruline, ma tean, aga las ma selgitan.

$ valikud massiiv koosneb sektsioonidest (ainult üks – sel juhul uus_kohandaja_sektsioon), igal sektsioonil on argumendid, väljad ja tõeväärtus (olemasolev jaotis), mis näitab, kas see on uus jaotis või lisame lihtsalt mõned väljad olemasolevale üks. Argumentide maatriks on identne sellele, mille teile üle andsite $ wp_customize-> add_section meetod. Väljade massiiv on pisut keerulisem.

Värskendus: Valikute massiiv kontrollargumentides on nüüd mitmemõõtmeline massiiv.

Iga väli koosneb kohandaja sättest ja kohandaja juhtnupust. Sellepärast on meil massiivid setting_args ja control_args. Need on peaaegu täpselt samad, mis argumendimassiivid, millele te edastate $ wp_customize-> add_setting ja $ wp_customize-> add_control meetodid. Ainus erinevus on juhtargumentide valikute massiiv, $ wp_customize-> add_control nõuab, et see oleks lihtne võti => väärtus paari massiiv ja me kasutame selle asemel mitmemõõtmelist massiivi.

Sel moel on iga valiku jaoks võimalik edastada rohkem andmeid, nii et näiteks kui laadite oma teemasse näiteks Google Fonti, saate stringe, mis võimaldavad teil sisestada õige fondi valikute massiivi . Näete näidet sellest teema, mis kasutab Customizer Boilerplate.

Seega, kui olete neist kolmest meetodist juba teadlik, on see kõik väga tuttav.

Märkeruudu juhtelemendi lisamine on peaaegu sama, peate lihtsalt muutma massiivi „control_args” tüübi „tüüp” väärtuseks „märkeruut”:

/ *
* ==============
* Märkeruudu väli
* ==============
* /
'new_checkbox_field' => massiiv (
'setting_args' => massiiv (
'vaikimisi' => tõene,
'type' => 'variant',
'võime' => nõutav_võimsus,
'transport' => 'värskenda',
'sanitize_callback' => 'thsp_sanitize_cb',
),
'control_args' => massiiv (
'label' => __ ('Uus raadio juhtimissilt', 'my_theme_textdomain'),
'type' => 'märkeruut', // Märkeruudu välja juhtelemendid
'prioriteet' => 2
)
),

Raadio- ja valitud juhtnupud on peaaegu samad, peate lihtsalt täpsustama antud valikud:

/ *
* ===========
* ===========
* Raadioväli
* ===========
* ===========
* /
'new_radio_field' => massiiv (
'setting_args' => massiiv (
'vaikimisi' => 'variant-2',
'type' => 'variant',
'võime' => $ thsp_cbp_capability,
'transport' => 'värskenda',
),
'control_args' => massiiv (
'label' => __ ('Uus raadio juhtimissilt', 'my_theme_textdomain'),
'type' => 'radio', // raadiojuhtimine
'valikud' => massiiv (
'variant-1' => massiiv (
'label' => __ ('1. võimalus', 'my_theme_textdomain')
),
'variant-2' => massiiv (
'label' => __ ('2. võimalus', 'my_theme_textdomain')
),
'variant-3' => massiiv (
'label' => __ ('3. võimalus', 'my_theme_textdomain')
)
),
'prioriteet' => 3
)
),

/ *
* ============
* ============
* Valige väli
* ============
* ============
* /
'new_select_field' => massiiv (
'setting_args' => massiiv (
'vaikimisi' => 'variant-3',
'type' => 'variant',
'võime' => $ thsp_cbp_capability,
'transport' => 'värskenda',
),
'control_args' => massiiv (
'label' => __ ('Uus valikuvälja silt', 'my_theme_textdomain'),
'type' => 'Select', // Valige juhtnupp
'valikud' => massiiv (
'variant-1' => massiiv (
'label' => __ ('1. võimalus', 'my_theme_textdomain')
),
'variant-2' => massiiv (
'label' => __ ('2. võimalus', 'my_theme_textdomain')
),
'variant-3' => massiiv (
'label' => __ ('3. võimalus', 'my_theme_textdomain')
)
),
'prioriteet' => 4
)
)

Ja lõpuks, kaks keerulist juhtimistüüpi, mis on WordPressi sisse ehitatud – failide üleslaadimine ja piltide üleslaadimine:

/ *
* ===========
* ===========
* Faili üleslaadimine
* ===========
* ===========
* /
'new_file_upload_field' => massiiv (
'setting_args' => massiiv (
'vaikimisi' => '',
'type' => 'variant',
'võime' => $ thsp_cbp_capability,
'transport' => 'värskenda',
),
'control_args' => massiiv (
'label' => __ ('Faili üleslaadimine', 'my_theme_textdomain'),
'type' => 'upload', // faili üleslaadimisvälja juhtimine
'prioriteet' => 5
)
),

/ *
* ============
* ============
* Pildi üleslaadimine
* ============
* ============
* /
'new_image_upload_field' => massiiv (
'setting_args' => massiiv (
'vaikimisi' => '',
'type' => 'variant',
'võime' => $ thsp_cbp_capability,
'transport' => 'värskenda',
),
'control_args' => massiiv (
'label' => __ ('Pildi üleslaadimine', 'my_theme_textdomain'),
'type' => 'image', // Pildi üleslaadimisvälja juhtimine
'prioriteet' => 6
)
)

Pange tähele, et kasutasin ‘Type’ => ‘variant’ kõigi nende väljade jaoks argumentide seadmisel. See võimaldab kõiki väärtusi oma andmebaasis ühe väärtusena salvestada. Alternatiiv on ‘Type’ => ‘theme_mod’ kuid nüüd jäägem valikule.

Valikute massiivi kasutamine jaotise Kohandaja jaotiste, sätete ja juhtelementide lisamiseks

Kui te pole kindel, kuidas WordPressi teemakohandajaga suhelda, minge ja kontrollige, sest just seda teeme praegu. Ainus erinevus on see, et jaotiste, sätete ja juhtelementide korraga lisamise asemel automatiseerime protsessi, kasutades meie loodud seeriaviisilist massiivi. Liigume sellesse sisse lihtsalt:

funktsioon thsp_cbp_customize_register ($ wp_customize) {

/ **
* Kohandatud juhtnupud
* /
nõuda (dirname (__ FILE__). '/ kohandatud-kontroll.php');


/ *
* Hankige kõik väljad abilise funktsiooni abil
* /
$ thsp_sections = thsp_cbp_get_fields ();


/ *
* Hankige DB kirje nimi, mille alla suvandid salvestatakse
* /
$ thsp_cbp_option = thsp_cbp_option ();


/ **
* Lükake massiiv läbi ja lisage jaotised Kohandaja
* /
foreach ($ thsp_sections kui $ thsp_section_key => $ thsp_section_value) {

/ **
* Vajadusel lisab jaotise Kohandaja
* /
if (! $ thsp_section_value ['olemasolev_sektsioon']) {

$ thsp_section_args = $ thsp_section_value ['args'];

// Lisa jaotis
$ wp_customize-> add_section (
$ thsp_section_key,
$ thsp_section_args
);

} // lõpeta kui

/ *
* Vaadake igas jaotises läbi väljade massiivi
* ning lisage sätted ja juhtelemendid
* /
$ thsp_section_fields = $ thsp_section_value ['väljad'];
foreach ($ thsp_section_väljad kui $ thsp_field_key => $ thsp_field_value) {

/ *
* Kontrollige, kas valiku salvestamiseks kasutatakse suvandit 'variant' või 'teema_mod'
*
* Kui midagi pole seatud, kasutatakse vaikimisi meetodit $ wp_customize-> add_setting 'theme_mod'
* Kui seadistustüübina kasutatakse suvandit "variant", salvestatakse selle väärtus kandes
* {eesliide} _valikute tabel. Valiku nime määratleb funktsioon thsp_cbp_option ()
* /
if (isset ($ thsp_field_value ['setting_args'] ['type']) && 'option' == $ thsp_field_value ['setting_args'] ['type']) {
$ setting_control_id = $ thsp_cbp_option. '['. $ thsp_field_key. ']';
} veel {
$ setting_control_id = $ thsp_field_key;
}

/ *
* Lisage vaikimisi tagasihelistamise funktsioon, kui ükski pole määratletud
* /
if (! isset ($ thsp_field_value ['setting_args'] ['sanitize_cb']))) {
$ thsp_field_value ['setting_args'] ['sanitize_cb'] = 'thsp_cbp_sanitize_cb';
}

/ **
* Lisab kohandaja sätted
* /
$ wp_customize-> add_setting (
$ setting_control_id,
$ thsp_field_value ['setting_args']
);

/ **
* Lisab kohandaja juhtimise
*
* massiivi "control_args" tuleb lisada väärtus "sektsioon"
* nii et juhtimist saaks praegusesse jaotisse lisada
* /
$ thsp_field_value ['control_args'] ['section'] = $ thsp_section_key;

/ *
* $ wp_customize-> add_control meetod nõuab, et valikud oleksid lihtsad võtmed => väärtuspaar
* /
if (isset ($ thsp_field_value ['control_args'] ['options']))) {
$ thsp_cbp_choices = array ();
foreach ($ thsp_field_value ['control_args'] ['options'] as $ thsp_cbp_choice_key => $ thsp_cbp_choice_value) {
$ thsp_cbp_choices [$ thsp_cbp_choice_key] = $ thsp_cbp_choice_value ['silt'];
}
$ thsp_field_value ['control_args'] ['options'] = $ thsp_cbp_choices;
}


// Kontrollige juhtimistüüpi
if ('color' == $ thsp_field_value ['control_args'] ['type']) {
$ wp_customize-> add_control (
uus WP_Customize_Color_Control (
$ wp_customize,
$ setting_control_id,
$ thsp_field_value ['control_args']
)
);
} elseif ('image' == $ thsp_field_value ['control_args'] ['type']) {
$ wp_customize-> add_control (
uus WP_Customize_Image_Control (
$ wp_customize,
$ setting_control_id,
$ thsp_field_value ['control_args']
)
);
} elseif ('upload' == $ thsp_field_value ['control_args'] ['type']) {
$ wp_customize-> add_control (
uus WP_Customize_Upload_Control (
$ wp_customize,
$ setting_control_id,
$ thsp_field_value ['control_args']
)
);
} veel {
$ wp_customize-> add_control (
$ setting_control_id,
$ thsp_field_value ['control_args']
);
}

} // lõpp kuulutama

} // lõpp kuulutama

}
add_action ('kohanda_registreerimine', 'thsp_cbp_kohanda_register');

Kõigi jaotiste läbimine ja nende lisamine, mida pole veel olemas, ning seejärel jaotiste kõigi väljade läbimine, sätete ja juhtelementide lisamine. See on kõik, mis siin toimub.

Pidage meeles, et kasutasime kõigi seadete jaoks ‘type’ => ‘option’? Sellepärast on meil nüüd “My_theme_options [$ thsp_field_key]” nii seadete kui ka sektsioonide jaoks. See salvestab kõik väärtused ühe serialiseeritud massiivina, mille saate selle abil alla laadida get_option (‘my_theme_options’). Või võite lihtsalt kasutada punktis defineeritud abistajafunktsioone helpers.php kõigi väljade praeguste ja vaikeväärtuste leidmiseks:

/ **
* Hankige optsioonide väärtused
*
* Massiiv, mis sisaldab kõiki optsioonide väärtusi
* Valiku vaikimisi väärtust kasutatakse juhul, kui kasutaja pole väärtust määranud
*
* @kasutab thsp_get_theme_customizer_defaults (), mis on määratletud kataloogis /customizer/options.php
* @return array Kõigi suvandite praegused väärtused
* @suhe teema_kohandaja_boileri 1.0
* /
funktsioon thsp_cbp_get_options_values ​​() {

// Hankige valiku vaikesätted
$ option_defaults = thsp_cbp_get_options_defaults ();

// Parsige salvestatud suvandid vaikimisi
$ thsp_cbp_options = wp_parse_args (saada_optsioon (thsp_cbp_option (), array ()), $ option_defaults);

// Tagastab parsitud massiivi
tagasi $ thsp_cbp_options;

}


/ **
* Hankige valiku vaikesätted
*
* Tagastab massiivi, mis sisaldab kõigi suvandite vaikeväärtusi
*
* @kasutab thsp_get_theme_customizer_fields (), mis on määratletud kataloogis /customizer/options.php
* @return array $ thsp_option_defaults Kõigi suvandite vaikeväärtused
* @suhe teema_kohandaja_boileri 1.0
* /
funktsioon thsp_cbp_get_options_defaults () {

// Hankige massiiv, mis sisaldab kõiki teemavaliku välju
$ thsp_sections = thsp_cbp_get_fields ();

// Alustage massiiv kõigi teemavalikute vaikesätete hoidmiseks
$ thsp_option_defaults = array ();

// Liigutage läbi parameetrite massiivi
foreach ($ thsp_sections kui $ thsp_section) {

$ thsp_section_fields = $ thsp_section ['väljad'];

foreach ($ thsp_section_väljad kui $ thsp_field_key => $ thsp_field_value) {

// Lisage iga parameetri massiivi suvandi vaikimisi massiivi assotsiatiivne massiivi võti
if (isset ($ thsp_field_value ['setting_args'] ['default']))) {
$ thsp_option_defaults [$ thsp_field_key] = $ thsp_field_value ['setting_args'] ['default'];
} veel {
$ thsp_option_defaults [$ thsp_field_key] = vale;
}

}

}

// Tagastab vaikimisi massiivi
return $ thsp_option_defaults;

}

Peaksin mainima veel ainult ühte asja – desinfitseerimise tagasihelistamise funktsioon, mille täpsustasime massiivis „setting_args”. Funktsioon on defineeritud exten.php-s ja töötab lihtsalt andmeid läbi wp_kses_post funktsioon:

/ **
* Teema Customizer sanitization tagasihelistamise funktsioon
* /
funktsioon thsp_sanitize_cb ($ input) {

return wp_kses_post ($ sisend);

}

Kust siit?

Nüüd saate seda teemakohandaja katteplaati oma teemades kasutada, peate vaid alla laadima selle Githubist, kopeerima oma teema kataloogi ja lisama põhifaili function.php, mis on 100% funktsionaalne ja enamiku jaoks piisavalt hea teemad.

Kuna teie teema pole “nagu enamus teemasid”, näeme järgmisel nädalal, kuidas laiendada katteplaati selle filtri- ja tegevuskonksude abil.

Mul oleks hea meel kuulda, kuidas teie arvates võiks seda katlamaja paremaks muuta või laiendada, nii et palun eemaldage kommentaarid.

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