1. 1. Introdução ao WordPress Theme Customizer
  2. 2. Interagindo com o WordPress Theme Customizer
  3. 3. WordPress Theme Customizer Boilerplate
  4. 4. Estendendo o Boilerplate do WordPress Theme Customizer
  5. 5. Lendo atualmente: Modelo personalizado do tema – Opções condicionais, temas filho e plugins

Até agora, vimos como é simples lidar com opções de tema usando o Theme Customizer Boilerplate e seus ganchos. Como você provavelmente se lembra, o passo mais importante foi conectar-se “Thsp_cbp_options_array” gancho de filtro e passando-lhe uma variedade de opções que você deseja usar no seu tema.


Tenho certeza de que você já está familiarizado com os ganchos de ação e filtro do WordPress – API de plug-in – e como eles funcionam, mas por precaução, aqui está uma rápida recapitulação (usando os ganchos de filtro como exemplo). Você pode definir sua função personalizada e conectá-la a um filtro existente usando a função add_filter:

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

Vamos nos concentrar no argumento da prioridade. Seu valor padrão é 10, portanto, se você não usar outro número, essa será a prioridade de execução da sua função. Abaixe o número, mais cedo sua função é executada. Então, se você fizer algo assim:

// Adicionando primeira mensagem
função my_theme_add_first_message ($ content) {
$ content. = '

Primeira Mensagem

'; retornar $ conteúdo; } add_filter ('the_content', 'my_theme_add_first_message', 1); // Adicionando segunda mensagem função my_theme_add_second_message ($ content) { $ content. = '

Segunda Mensagem

'; retornar $ conteúdo; } add_filter ('the_content', 'my_theme_add_second_message', 2);

Quando você chama a função_content no single.php ou em qualquer outro modelo, o conteúdo da postagem será mostrado, seguido pela Primeira Mensagem, seguida pela Segunda Mensagem. Não porque essa é a ordem deles neste snippet de código, mas por causa do parâmetro de prioridade de execução. Pense em ganchos como se fossem bolas de neve rolando morro abaixo, escolhendo todo tipo de coisas a caminho.

Como isso se aplica ao Theme Customizer Boilerplate?

Você pode se conectar “Thsp_cbp_options_array” do arquivo function.php do seu tema, usando uma função personalizada (por exemplo, my_theme_options_array) com o valor de prioridade definido como 1. Isso significa qualquer outra função conectada a “Thsp_cbp_options_array” o gancho de filtro fará isso APÓS a função my_theme_options_array que você já definiu. Veja este exemplo:

função my_theme_options_array () {
// Usando a função auxiliar para obter a capacidade padrão requerida
$ thsp_cbp_capability = thsp_cbp_capability ();

$ options = array (
// ID da seção
'my_theme_new_section' => matriz (

'existing_section' => false,
'args' => matriz (
'title' => __ ('Nova seção', 'meu_domínio_do_domínio_do_domínio'),
'priority' => 10
),
'fields' => array (
/ *
* Campo de rádio
* /
'my_radio_button' => matriz (
'setting_args' => matriz (
'padrão' => 'opção-2',
'type' => 'opção',
'recurso' => $ thsp_cbp_capability,
'transporte' => 'atualização',
),
'control_args' => matriz (
'label' => __ ('Meu botão de opção', 'meu_domínio_de_domínio'),
'type' => 'radio', // Rádio controle
'escolhas' => matriz (
'opção-1' => matriz (
'label' => __ ('Opção 1', 'nome_do_domínio_meu_domínio')
),
'opção-2' => matriz (
'label' => __ ('Opção 2', 'my_theme_textdomain')
),
'opção-3' => matriz (
'label' => __ ('Opção 3', 'my_theme_textdomain')
)
),
'priority' => 3
)
)
)
)
);

retornar $ opções;
}
add_filter ('thsp_cbp_options_array', 'my_theme_options_array', 1);

Isso adicionará Nova Seção ao Theme Customizer com um campo chamado Meu botão de opção. Então você ou outra pessoa desenvolve um tema filho para o seu tema e decide manter a Nova Seção, mas, em vez do Meu botão de opção, pode ser melhor ter Minha caixa de seleção. Fácil:

função my_child_theme_options_array ($ options) {
// Usando a função auxiliar para obter a capacidade padrão requerida
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* Desta vez, estamos apenas editando campos em my_theme_new_section na matriz $ options
* /
$ options ['my_theme_new_section'] ['fields'] = matriz (
'my_checkbox_field' => matriz (
'setting_args' => matriz (
'default' => true,
'type' => 'opção',
'recurso' => $ thsp_cbp_capability,
'transporte' => 'atualização',
),
'control_args' => matriz (
'label' => __ ('Minha caixa de seleção', 'meu_domínio_do_texto_do_domínio'),
'type' => 'checkbox', // Controle do campo Checkbox
'priority' => 2
)
)
);

retornar $ opções;
}
add_filter ('thsp_cbp_options_array', 'my_child_theme_options_array', 2);

Percebeu que não passei o parâmetro $ options para my_theme_options_array e o fiz na função my_child_theme_options_array? Isso porque quando eu me liguei pela primeira vez “Thsp_cbp_options_array” hook Eu queria substituir as opções de amostra do Theme Customizer Boilerplate. Então, quando eu me juntei novamente ao tema infantil, não queria excluir completamente as opções do tema pai, apenas editá-las um pouco. É por isso que estou mexendo apenas com $ options [‘my_theme_new_section’] [‘fields’], não com a matriz inteira de $ options.

Claro, você também pode se conectar “Thsp_cbp_options_array” filtro de gancho do tema principal mais de uma vez. Digamos que você optou por não adicionar recursos de território de plug-ins ao seu tema e permita que os plug-ins façam o que devem. Agora você deseja mostrar algumas opções do Customizador de tema apenas se um determinado plug-in estiver ativo. Mais uma vez, fácil:

função my_plugin_dependency_options_array ($ options) {
// Usando a função auxiliar para obter a capacidade padrão requerida
$ thsp_cbp_capability = thsp_cbp_capability ();

/ *
* Apenas adicionando my_plugin_dependency_section se 'test-plugin.php' estiver ativo
* /
if (is_plugin_active ('teste-plugin / teste-plugin.php')) {

$ options ['my_plugin_dependency_section'] = matriz (
'existing_section' => false,
'args' => matriz (
'title' => __ ('Dependência do plug-in', 'meu_domínio_do_domínio_do_domínio'),
'priority' => 10
),
'fields' => array (
/ *
* Campo de texto
* /
// ID do campo
'new_text_field' => matriz (
'setting_args' => matriz (
'default' => __ ('', 'meu_domínio_de_domínio'),
'type' => 'opção',
'recurso' => $ thsp_cbp_capability,
'transporte' => 'atualização',
),
'control_args' => matriz (
'label' => __ ('Mostra apenas se', 'meu_domínio_do_domínio_do_domínio'),
'type' => 'text', // Controle de campo de texto
'priority' => 5
)
),
)
);

}

retornar $ opções;
}
add_filter ('thsp_cbp_options_array', 'my_plugin_dependency_options_array', 3);

Deseja desenvolver um plugin de funcionalidade principal para ser usado com o seu tema (como deveria)? Você pode se conectar “Thsp_cbp_options_array” também a partir de um dos arquivos do seu plug-in, da mesma forma que você faria a partir do arquivo function.php de um tema.

Não fique louco

Toda vez que você adiciona opções a um tema desenvolvido, você precisa manter um dos princípios básicos do WordPress – Decisão não Opções – em mente. É fácil se deixar levar e começar a adicionar opções de usuário para todos os detalhes menores que o seu tema tiver, mas isso não está fazendo nenhum favor a ninguém. Espero que esses poucos truques, especialmente a adição de opções dependentes de plugins, ajudem a manter as opções do tema o mais baixas possível.

Afinal, se o seu tema tem opções para coisas como todos os raios de borda de cada elemento, não é um tema, é um editor WYSIWYG e provavelmente não é um ótimo.

Você não compra uma camisa branca porque, com algum esforço extra, você pode transformá-la em uma toalha de mesa, porque você gosta da sua “roupa branca”. Os temas do WordPress também devem ser assim, devem apresentar o conteúdo de uma certa maneira, não tentar fazer tudo de todas as maneiras imagináveis. Se você é um desenvolvedor de temas, é seu trabalho garantir que as expectativas dos usuários sejam o que deveriam ser.

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