テーマカスタマイザにチェックボックスを追加しようとするとき、それは「常に」選択されているようです。選択を解除しようとすると、ほとんど選択できないように強制するJSコードがあるかのように、選択を解除できません。
シリアル化されたテーマオプションを使用していますが、すべてが正しく接続されています。コードは次のようになります( 'customize_register'フックを介してトリガーされます)。
$wp_customize->add_setting( mytheme_options[chk_hide_description], array(
'default' => false,
'type' => 'option',
'capability' => 'edit_theme_options' )
);
$wp_customize->add_control( 'display_header_text', array(
'settings' => mytheme_options[chk_hide_description],
'label' => __( 'Hide site description' ),
'section' => 'title_tagline',
'type' => 'checkbox',
) );
ここで報告されている同じ問題: http://ottopress.com/2012/how-to-leverage-the-theme-customizer-in-your-own-themes/#div-comment-11254 。
チェックボックスが可能です。一例として、これがお役に立てば幸いです。
最初にadd_setting
を介して設定を定義する必要があります。重要なのは、値type
を持つパラメーターoption
です。この後、add_control
を介してフィールドを制御し、パラメータtype
をcheckbox
に設定します。代わりにselect
を使うことも可能です。 std
を介してデフォルト値を追加した場合は、このパラメーターを使用せずにそれを機能させます。 1と0の値を持つchoicesパラメータを追加すれば、alternativeもうまくいきます。しかし、パラメータをcheckbox
にのみ設定すれば、テストではうまくいきます。あなたは私のプロジェクトの中にソースを見つけます、下記のリンクを見てください。
また、wp-includes/class-wp-customize-control.phpの246行目のvalue文字列の出力をデバッグできます。多分それは役立ちます。
デバッグ:
case 'checkbox':
var_dump( $this->value() );
例:
// Add settings for output description
$wp_customize->add_setting( $this->option_key . '[echo_desc]', array(
'default' => $defaults['echo_desc'],
'type' => 'option',
'capability' => 'edit_theme_options'
) );
// Add control and output for select field
$wp_customize->add_control( $this->option_key . '_echo_desc', array(
'label' => __( 'Display Description', 'documentation' ),
'section' => 'title_tagline',
'settings' => $this->option_key . '[echo_desc]',
'type' => 'checkbox',
'std' => '1'
) );
この情報源の結果を参照してください。
あなたは私のテーマ Githubでホストされている - ドキュメントに作業結果を見つけます 。
私も同様の問題を抱えていましたが、'type' => 'option'
にadd_setting
を設定することが原因であることがわかりました。
これを削除することで私の問題は解決しました。現在使用しているのは以下のとおりで、問題なく動作します。
$wp_customize->add_section('footer_social_media_section' , array(
'title' => __('Footer Social Media', 'dd_theme'),
'priority' => 1020
));
$wp_customize->add_setting('show_footer_facebook', array(
'default' => '1'
));
$wp_customize->add_control(
new WP_Customize_Control(
$wp_customize,
'show_footer_facebook',
array(
'label' => __('Show Facebook Link', 'dd_theme'),
'section' => 'footer_social_media_section',
'settings' => 'show_footer_facebook',
'type' => 'checkbox',
)
)
);