Tema Customizer Boilerplate – Opțiuni condiționale, Teme pentru copii și plugin-uri

  1. 1. Introducere în personalizatorul de temă WordPress
  2. 2. Interacționând cu personalizatorul de temă WordPress
  3. 3. Boilerplate de personalizare a temei WordPress
  4. 4. Extinderea boilerplatei cu tema WordPress
  5. 5. Acum citesc: Tema Customizer Boilerplate – Opțiuni condiționale, Teme pentru copii și plugin-uri

Până acum, am văzut cât de simplu este de a gestiona opțiunile tematice folosind Tema Customizer Boilerplate și cârligele sale. După cum vă amintiți probabil, cel mai important pas a fost legarea „Thsp_cbp_options_array“ filtrați cârligul și treceți-l pe o serie de opțiuni pe care doriți să le utilizați în tema dvs..


Sunt sigur că sunteți deja familiarizați cu acțiunile WordPress și cârligele de filtrare – API-ul Plugin – și modul în care funcționează, dar, în caz, aici este o recapitulare rapidă (folosind ca exemplu cârligele de filtrare) Puteți defini funcția personalizată și conectați-o la un filtru existent folosind funcția add_filter:

add_filter ($ tag, $ funcție_to_add, prioritate $, $ acceptat_args);

Să ne concentrăm pe argumentul prioritar. Valoarea implicită a acesteia este 10, deci dacă nu folosiți un alt număr, aceasta va fi prioritatea de execuție a funcției dvs. Reduceți numărul, mai devreme funcția dvs. este executată. Deci, dacă faci așa ceva:

// Adăugarea primului mesaj
function my_theme_add_first_message ($ content) {
$ continut. = '

Primul mesaj

„; returna $ continut; } add_filter ('the_content', 'my_theme_add_first_message', 1); // Adăugarea celui de-al doilea mesaj function my_theme_add_second_message (conținut $) { $ continut. = '

Al doilea mesaj

„; returna $ continut; } add_filter ('the_content', 'my_theme_add_second_message', 2);

Când apelați funcția_content în single.php sau orice alt tip de conținut de postare va fi afișat, urmat de primul mesaj, urmat de al doilea mesaj. Nu pentru că aceasta este comanda lor în acest fragment de cod, ci datorită parametrului prioritar de execuție. Gândiți-vă la cârlige ca și cum ar fi bulgări de zăpadă care se rostogoleau pe deal și aleg tot felul de lucruri pe drum.

Cum se aplică acest lucru pentru Boilerplate cu tema personalizatoare?

Vă puteți conecta „Thsp_cbp_options_array“ din fișierul theme.php al temei dvs., utilizând o funcție personalizată (de exemplu, my_theme_options_array) cu valoarea prioritară setată la 1. Aceasta înseamnă orice altă funcție care se conectează la „Thsp_cbp_options_array“ cârligul filtrului o va face DUPĂ funcția mea_theme_options_array pe care ați definit-o deja. Aruncați o privire la acest exemplu:

function my_theme_options_array () {
// Utilizarea funcției helper pentru a obține capacitatea implicită necesară
$ thsp_cbp_capability = thsp_cbp_capability ();

$ options = array (
// ID secțiune
'my_theme_new_section' => tablou (

'eżistenti_section' => false,
'args' => array (
'title' => __ ('Secțiune nouă', 'my_theme_textdomain'),
'prioritate' => 10
),
'fields' => array (
/ *
* Câmp radio
* /
'my_radio_button' => array (
'setting_args' => tablou (
'default' => 'opțiunea-2',
'type' => 'opțiune',
'capability' => $ thsp_cbp_capability,
'transport' => 'reîmprospătare',
),
'control_args' => tablou (
'label' => __ ('Butonul meu radio', 'my_theme_textdomain'),
'type' => 'radio', // Control radio
'options' => array (
'option-1' => array (
'label' => __ ('Opțiunea 1', 'my_theme_textdomain')
),
'option-2' => array (
'label' => __ ('Opțiunea 2', 'my_theme_textdomain')
),
'option-3' => array (
'label' => __ ('Opțiunea 3', 'my_theme_textdomain')
)
),
'prioritate' => 3
)
)
)
)
);

opțiuni returnare $;
}
add_filter ('thsp_cbp_options_array', 'my_theme_options_array', 1);

Aceasta va adăuga o nouă secțiune la Customizerul cu temă cu un câmp în el, numit butonul meu radio. Apoi, tu sau altcineva dezvoltă o temă pentru copil pentru tema dvs. și decideți să păstrați secțiunea nouă, dar în loc de butonul meu radio, ar putea fi mai bine să aveți caseta de selectare. Uşor:

function my_child_theme_options_array ($ opțiuni) {
// Utilizarea funcției helper pentru a obține capacitatea implicită necesară
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* De data aceasta, edităm doar câmpuri în secțiunea mea_temă_numeră_ din secțiunea $ opțiuni
* /
$ options ['my_theme_new_section'] ['fields'] = array (
'my_checkbox_field' => array (
'setting_args' => tablou (
'default' => true,
'type' => 'opțiune',
'capability' => $ thsp_cbp_capability,
'transport' => 'reîmprospătare',
),
'control_args' => tablou (
'label' => __ ('Caseta de selectare', 'my_theme_textdomain'),
'type' => 'caseta de selectare', // Control câmp checkbox
'prioritate' => 2
)
)
);

opțiuni returnare $;
}
add_filter ('thsp_cbp_options_array', 'my_child_theme_options_array', 2);

Ați observat că nu am trecut parametrul $ options la my_theme_options_array și l-am făcut în funcția my_child_theme_options_array? Acest lucru se datorează faptului că atunci când m-am conectat prima dată „Thsp_cbp_options_array“ cârlig Am vrut să înlocuiesc opțiunile de probă Tema Customizer Customizer. Apoi, când m-am conectat din nou la tema copilului meu, nu am vrut să șterg complet opțiunile temei părinte, ci doar să le editez ușor. Acesta este motivul pentru care confuz doar opțiuni $ [„my_theme_new_section”] [„câmpuri”], nu întregul tablou de opțiuni $.

Desigur, puteți să vă conectați „Thsp_cbp_options_array“ filtrați cârligul de la tema părintească de mai multe ori .. Să zicem că ați ales să nu adăugați funcții de teritoriu de plugin-uri la tema dvs. și să lăsați pluginurile să facă ceea ce trebuiau. Acum doriți să afișați câteva opțiuni de personalizare a temei numai dacă un anumit plugin este activ. Din nou, ușor:

function my_plugin_dependency_options_array ($ opțiuni) {
// Utilizarea funcției helper pentru a obține capacitatea implicită necesară
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* Adăugarea mea_plugin_dependency_section numai dacă „test-plugin.php” este activă
* /
if (is_plugin_active ('test-plugin / test-plugin.php')) {

$ options ['my_plugin_dependency_section'] = array (
'eżistenti_section' => false,
'args' => array (
'title' => __ ('Dependența pluginului', 'my_theme_textdomain'),
'prioritate' => 10
),
'fields' => array (
/ *
* Câmp text
* /
// ID camp
'new_text_field' => tablou (
'setting_args' => tablou (
'default' => __ ('', 'my_theme_textdomain'),
'type' => 'opțiune',
'capability' => $ thsp_cbp_capability,
'transport' => 'reîmprospătare',
),
'control_args' => tablou (
'label' => __ ('Se afișează numai dacă', 'my_theme_textdomain'),
'type' => 'text', // Control câmp text
'prioritate' => 5
)
),
)
);

}

opțiuni returnare $;
}
add_filter ('thsp_cbp_options_array', 'my_plugin_dependency_options_array', 3);

Doriți să dezvoltați un plugin de funcționalitate de bază pentru a fi folosit cu tema dvs. (așa cum ar trebui)? Vă puteți conecta „Thsp_cbp_options_array“ de la unul dintre fișierele pluginului dvs., la fel cum ați face-o din fișierul theme.php al unei teme.

Nu mergeți opțiunea nebună

De fiecare dată când adăugați opțiuni la o temă pe care o dezvoltați, trebuie să păstrați unul dintre principiile de bază ale WordPress – Nu decizie Opțiuni – in minte. Este ușor să te îndepărtezi și să începi să adaugi opțiuni de utilizator pentru fiecare detaliu minor pe care ți-l oferă tema, dar acest lucru nu face nimănui un favor. Sper că aceste câteva trucuri, în special adăugarea de opțiuni dependente de plugin, vă vor ajuta să mențineți opțiunile temei cât mai scăzute.

La urma urmei, dacă tema dvs. are opțiuni pentru lucruri precum fiecare rază de frontieră a fiecărui element, nu este o temă, este un editor WYSIWYG și probabil nu este unul excelent.

Nu cumpărați o cămașă albă, deoarece, cu un efort suplimentar, o puteți transforma într-o pânză de masă, o cumpărați pentru că vă place „albul”. Temele WordPress ar trebui să fie și ele, ar trebui să prezinte conținut într-un anumit fel, nu să încerce să facă totul în toate modurile imaginabile. Dacă sunteți un dezvoltator de teme, trebuie să vă asigurați că așteptările utilizatorilor ar trebui să fie.

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