web-dev-qa-db-ja.com

カスタマイザの他の設定に基づいてカスタマイザコントロールを非表示/表示する

これはjqueryを知っている人にとっては簡単な方法かもしれません。

だから、私は2つのカスタマイザコントロールがあります。

最初のチェックボックスはlmscore_improved_summaryです。そして2番目のものはcourse_instructor_layoutです。

だから私が欲しいのはcourse_instructor_layoutがチェックされた時にlmscore_improved_summaryを隠すことです。

だからこれは私がしようとしているjqueryコードです。

(function( $ ) {
wp.customize.bind( 'ready', function() {

    var customize = this; // Customize object alias.
    customize( 'lmscore_improved_summary', function( value ) {


        var Controls = [
            'course_instructor_layout'
        ];

        $.each( Controls, 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 );
            } );
        } );

    } );
} );
})( jQuery );

しかし、私が欲しいものと正反対です。 course_instructor_layoutをチェックすると、lmscore_improved_summaryが表示されます。

私は少しJavaScriptを知っていますが、jqueryは私にとって全く新しいものです。

私を助けてください。

2
vishal ranjan

あなたはそのようなsomethignでPHPの中で定義の条件付き表示を定義することができます:

$wp_customize->add_control("course_instructor_layout", [
    // ... other arguments
    "settings" => "course_instructor_layout",
    "active_callback" => function ($control) {
        return !$control->manager->get_setting("lmscore_improved_summary")->value();
    },
]);

それでもうまくいかない場合は、質問を編集してlmscore_improved_summarycourse_instructor_layoutの完全な定義を追加してください。

2
Jeanne Kidaw