Boilerplate del personalitzador del tema: opcions condicionals, temes infantils i complements

  1. 1. Introducció al personalitzador de temes de WordPress
  2. 2. Interacció amb el tema del personalitzador de WordPress
  3. 3. Planta de personalització del tema de WordPress
  4. 4. Ampliació de la placa de comandament personalitzada del tema de WordPress
  5. 5. Actualment Llegint: Boilerplate del personalitzador del tema: opcions condicionals, temes infantils i complements

Fins ara, hem vist com de senzill és manejar les opcions de tema mitjançant el tema Customizer Boilerplate i els seus ganxos. Com probablement recordeu, el pas més important va ser enganxar-se “Thsp_cbp_options_array” filtrar el ganxo i passar-lo a una varietat d’opcions que voleu utilitzar al vostre tema.


Estic segur que ja coneixeu l’acció de WordPress i els ganxos de filtres (API de plugins) i el seu funcionament, però per si de cas, en teniu una ràpida recuperació (utilitzant com a exemple els ganxos de filtre). Podeu definir la vostra funció personalitzada i enganxar-la a un filtre existent mitjançant la funció add_filter:

add_filter ($ tag, $ function_to_add, $ prioritat, $ acceptada_args);

Ens centrem en l’argument prioritari. El seu valor predeterminat és de 10, de manera que si no utilitzeu un altre número, serà la vostra prioritat d’execució de la vostra funció. Baixeu el número, abans s’executarà la vostra funció. Si fas una cosa així:

// Afegir primer missatge
function my_theme_add_first_message ($ contingut) {
$ contingut. = '

Primer Missatge

'; retornar contingut de $; } add_filter ('the_content', 'my_theme_add_first_message', 1); // Afegir un segon missatge function my_theme_add_second_message (contingut $) { $ contingut. = '

Segon missatge

'; retornar contingut de $; } add_filter ('the_content', 'my_theme_add_second_message', 2);

Quan truqueu a la funció_content en single.php o qualsevol altre contingut de la publicació de la plantilla es mostrarà, seguit del primer missatge, seguit del segon missatge. No perquè sigui el seu ordre en aquest fragment de codi, sinó pel paràmetre de prioritat d’execució. Penseu en els ganxos com si fossin boles de neu rodolant per la muntanya recollint tot tipus de coses al seu camí.

Com s’aplica això a Boilerplate del personalitzador del tema?

Et pots enganxar “Thsp_cbp_options_array” del fitxer function.php del vostre tema, utilitzant una funció personalitzada (per exemple, my_theme_options_array) amb un valor de prioritat establert a 1. Això significa qualsevol altra funció que s’enllaça “Thsp_cbp_options_array” el ganxo de filtre ho farà DESPRÉS de la funció my_theme_options_array que ja heu definit. Mireu aquest exemple:

function my_theme_options_array () {
// Utilitzant la funció d’assistent per obtenir la capacitat necessària per defecte
$ thsp_cbp_capability = thsp_cbp_capability ();

$ options = matriu (
// Identificació de secció
'my_theme_new_section' => matriu (

'existent_secció' => fals,
'args' => matriu (
'title' => __ ('Nova secció', 'my_theme_textdomain'),
'prioritat' => 10
),
'camps' => array (
/ *
* Camp de ràdio
* /
'my_radio_button' => matriu (
'setting_args' => matriu (
'default' => 'opció-2',
'type' => 'opció',
'capability' => $ thsp_cbp_capability,
'transport' => 'refrescar',
),
'control_args' => matriu (
'label' => __ ('El meu botó de ràdio', 'my_theme_textdomain'),
'type' => 'ràdio', // Control de ràdio
'options' => matriu (
'option-1' => matriu (
'label' => __ ('Opció 1', 'my_theme_textdomain')
),
'option-2' => matriu (
'label' => __ ('Opció 2', 'my_theme_textdomain')
),
'option-3' => matriu (
'label' => __ ('Opció 3', 'my_theme_textdomain')
)
),
'prioritat' => 3
)
)
)
)
);

opcions de retorn de $;
}
add_filter ('thsp_cbp_options_array', 'my_theme_options_array', 1);

Això afegirà una secció nova al personalitzador de temes amb un camp inclòs, anomenat El meu botó de ràdio. Aleshores, vosaltres o algú altre desenvolupen un tema infantil pel vostre tema i decidiu conservar la secció nova, però en lloc del botó de ràdio pot ser millor tenir la meva casella de selecció. Fàcil:

function my_child_theme_options_array ($ opcions) {
// Utilitzant la funció d’assistent per obtenir la capacitat necessària per defecte
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* Aquesta vegada, només estem editant camps a my_theme_new_section a la matriu d'opcions $
* /
$ options ['my_theme_new_section'] ['camps'] = array (
'my_checkbox_field' => matriu (
'setting_args' => matriu (
'default' => true,
'type' => 'opció',
'capability' => $ thsp_cbp_capability,
'transport' => 'refrescar',
),
'control_args' => matriu (
'label' => __ ('La meva casella de verificació', 'my_theme_textdomain'),
'type' => 'casella de selecció', // Control de camp de caixa de verificació
'prioritat' => 2
)
)
);

opcions de retorn de $;
}
add_filter ('thsp_cbp_options_array', 'my_child_theme_options_array', 2);

S’ha adonat que no he superat el paràmetre $ options a my_theme_options_array i ho he fet en la funció my_child_theme_options_array? Això és perquè quan vaig entrar per primera vegada “Thsp_cbp_options_array” hook He volgut substituir les opcions de l’exemple de personalitzadors de la placa de cuina. Aleshores, quan he tornat a connectar-hi amb el tema del meu fill, no volia suprimir completament les opcions del tema parent, sinó modificar-les lleugerament. És per això que només estic enviant les opcions de $ [“my_theme_new_section”] [“camps”], no a tota la matriu d’opcions $.

Per descomptat, també podeu connectar-hi “Thsp_cbp_options_array” filtrar el ganxo del tema parent més d’una vegada .. Suposem que heu decidit no afegir funcions del territori de complement al vostre tema i permeteu que els plugins facin el que suposaven. Ara només voleu mostrar algunes opcions del personalitzador de temes només si està activat un cert complement. De nou, fàcil:

function my_plugin_dependency_options_array ($ opcions) {
// Utilitzant la funció d’assistent per obtenir la capacitat necessària per defecte
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* Només afegir my_plugin_dependency_section si està activat "test-plugin.php"
* /
if (is_plugin_active ('test-plugin / test-plugin.php')) {

$ options ['my_plugin_dependency_section'] = matriu (
'existent_secció' => fals,
'args' => matriu (
'title' => __ ('Dependència del complement', 'my_theme_textdomain'),
'prioritat' => 10
),
'camps' => array (
/ *
* Camp de text
* /
// Identificador de camp
'new_text_field' => matriu (
'setting_args' => matriu (
'default' => __ ('', 'my_theme_textdomain'),
'type' => 'opció',
'capability' => $ thsp_cbp_capability,
'transport' => 'refrescar',
),
'control_args' => matriu (
'label' => __ ('Només es mostra si', 'my_theme_textdomain'),
'type' => 'text', // Control del camp de text
'prioritat' => 5
)
),
)
);

}

opcions de retorn de $;
}
add_filter ('thsp_cbp_options_array', 'my_plugin_dependency_options_array', 3);

Voleu desenvolupar un plugin de funcionalitat principal per utilitzar-lo amb el tema (com heu de fer)? Et pots enganxar “Thsp_cbp_options_array” també des d’un fitxer del vostre complement, de la mateixa manera que ho faríeu des del fitxer function.php d’un tema.

No tornis a boig

Cada vegada que afegiu opcions a un tema que desenvolupeu, heu de mantenir un dels principis bàsics de WordPress. Decisió no Opcions – en compte. És fàcil deixar-se endur i començar a afegir opcions d’usuari per a tots els detalls menors del vostre tema, però no fa res a ningú. Espero que aquests pocs trucs, sobretot afegint opcions dependents del complement, ajudaran a que les opcions del vostre tema es comptin el mínim possible.

Al cap i a la fi, si el tema té opcions per a coses com cada radi de vora de cada element, no és un tema, sinó que és un editor WYSIWYG i, probablement, no és fantàstic..

No compreu una samarreta blanca perquè, amb un esforç addicional, podeu transformar-la en un drap de taula, si la compreu perquè us agrada la seva “blancor”. Els temes de WordPress també haurien de ser així, haurien de presentar contingut d’una determinada manera, no tractar de fer-ho tot de totes les maneres imaginables. Si sou un desenvolupador de temes, és la vostra tasca assegurar-vos que les expectatives dels usuaris són com haurien de ser.

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