再次考虑您希望控件如何工作。如果隐藏控件,如何取消隐藏它?
听起来您需要一个复选框来指示该节是显示还是隐藏。在PHP中的“customize\\u register”操作中,定义指示器的持有者。他们把这个命名为setting
, 默认值为“theme\\u mod”类型。然后定义control
供用户进行交互。对于布尔选项,最好将其命名为“on”状态,这样逻辑才有意义,它们与核心选项匹配。
$wp_customize->add_setting( \'show_about_section\', array(
\'default\' => true,
\'transport\' => \'postMessage\',
\'sanitize_callback\' => \'wp_validate_boolean\',
) );
$wp_customize->add_control( \'show_about_section\', array(
\'label\' => __( \'Display the About section\', \'myprefix\' ),
\'section\' => \'myprefix_theme_section\',
\'type\' => \'checkbox\',
) );
假设节始终是输出的,我们可以在其上放置一个类来隐藏它。您的PHP将在输出About部分的地方使用theme\\u mod:
$class = \'about_me\';
if ( ! get_theme_mod( \'show_about_section\', true ) ) {
$class .= \' invisible\';
}
// code to output section using $class on it
在“customize_preview_init”操作中加载的javascript中,使用如下内容。
( function( $ ) {
wp.customize( \'show_about_section\', function( value ) {
value.bind( function( show ) {
$( \'.about_me\' ).toggleClass( \'invisible\', show );
} );
} );
} )( jQuery );
无需将类名发送到预览,但如果需要一个控件来处理多个类名,则可以对其进行不同的编码。自定义程序已将控件的值发送到预览,但在此代码示例中,这是一个布尔值,而不是类名。保存theme\\u mod不需要额外的代码。这是为你做的。