如何使用Java API切换WP定制器面板和部分?

时间:2017-12-31 作者:Nasir

我正在使用下面的代码切换自定义程序控件,但不确定如何以相同的方式切换面板/节?任何人都可以帮助我。

wp.customize.bind( \'ready\', function() { // Ready?
    var customize = this; // Customize object alias.
    customize( \'display_blogname\', function( value ) {

        // ...previous codes...

        var colorControls = [
            \'header_textcolor\',
            \'header_textcolor_hover\'
        ];

        $.each( colorControls, function( index, id ) {
            customize.control( id, function( control ) {
                /**
                 * Toggling function
                 */
                var toggle = function( to ) {
                    control.toggle( to );
                };

                // 1. On loading.
                toggle( value.get() );

                // 2. On value change.
                value.bind( toggle );
            } );
        } );
    } );
} );

1 个回复
最合适的回答,由SO网友:Weston Ruter 整理而成

您不应该使用jQuerytoggle. 这是直接操纵DOM元素的可见性。相反,您应该使用active 控件、节或面板的状态。您可以通过隐藏控件control.active.set(false). 你也可以这样做panelsection. 在我的帖子中看到更多的例子Dependently-Contextual Customizer Controls. 另请参见我的答案https://wordpress.stackexchange.com/a/286294/8521

要对面板或剖面执行相同操作,请执行以下操作:

wp.customize.panel( \'idOfPanel\', function( panel ) {
    panel.active.set( false ); // Hide it.
    // ...
} );

wp.customize.section( \'idOfSection\', function( section ) {
    section.active.set( true ); // Show it.
    // ...
} );
在“…”中您可能还希望覆盖validate 上的方法active 状态强制具有特定值,以便在自定义程序预览刷新时active_callback 不会覆盖您在JS中设置的内容。

结束

相关推荐