Adicionando checkbox de seleção ao personalizador de tema

Tenho tentado adicionar uma checkbox de seleção ao personalizador do tema. Eu tenho uma checkbox de seleção adicionada usando este código em minhas funções.php

function theme_customizer_register_checkbox($wp_customize) { $wp_customize->add_section( 'savior_global_options', array( 'title' => 'Global Options', ) ); $wp_customize->add_setting( 'show_supporters', array( 'default' => true, 'type' => 'option', 'capability' => 'edit_theme_options' ) ); $wp_customize->add_control( 'display_supporters', array( 'settings' => 'show_supporters', 'label' => 'Show supporters section', 'section' => 'savior_global_options', 'type' => 'checkbox', ) ); } add_action( 'customize_register', 'theme_customizer_register_checkbox' ); 

Uma vez que eu cheguei a checkbox de seleção funcionando. Descobri que quando chequei a checkbox, não mudaria de estado. Sempre ficou checado. Eu fiz algumas pesquisas e encontrei postagem neste site que foi resolvida, mas não deixou uma resposta. O post me levou a pensar que eu precisava alterar o valor na minha function $wp_customize->add_control() para um valor exclusivo. Então eu mudei para display_supporters . Isso resolveu meu problema, mas agora não consigo obter o valor da checkbox de seleção. Quando eu despejo essa variável,

 $supporters = get_theme_mod('display_supporters); 

Eu tenho bool (falso)

e isso fica assim. Não importa o que eu faça na checkbox de seleção. o que estou perdendo?

Solutions Collecting From Web of "Adicionando checkbox de seleção ao personalizador de tema"

Eu consegui resolver isso. Aqui está o código que marcou a checkbox de seleção.

 function theme_customizer_register_checkbox($wp_customize) { $wp_customize->add_section( 'global_options', array( 'title' => 'Global Options', ) ); $wp_customize->add_setting( 'show_supporters', array( 'default' => true, 'transport' => 'postMessage' ) ); $wp_customize->add_control( 'show_supporters', array( 'section' => 'global_options', 'label' => 'Show supporters section?', 'type' => 'checkbox' ) ); } add_action( 'customize_register', 'theme_customizer_register_checkbox' ); 

Então eu chequei o valor na frente como assim

 if(true === get_theme_mod('show_supporters')){ do something here } 

Tenho certeza de que sua configuração de modificação de tema não está sendo exibida, pois você a está salvando como uma opção. Você está definindo para salvar como uma opção no método $wp_customize->add_setting com o argumento 'type' => 'option' .

Como é uma opção, você pode recuperá-lo usando get_option( 'show_supporters' ) . Observe que ‘show_supporters’ é o nome da configuração que você criou não display_supporters.

No entanto, a menos que seu tema já tenha um painel de configurações, provavelmente é melhor armazená-lo nas configurações de modificação do seu tema. Você pode usar get_theme_mod( 'show_supporters' ) para obter seu valor. Otto no WordPress escreveu um bom artigo sobre a substituição de páginas de opções com o personalizador do tema .

Eu só poderia reproduzir o problema com a checkbox de seleção não desmarcando se o id dos methods add_setting e add_control não coincidisse. Incluí o código que funcionou para mim abaixo.

 $wp_customize->add_setting( 'show_supporters', array( 'default' => true, 'capability' => 'edit_theme_options' ) ); $wp_customize->add_control( 'show_supporters', array( 'settings' => 'show_supporters', 'label' => 'Show supporters section', 'section' => 'savior_global_options', 'type' => 'checkbox' ) );