web-dev-qa-db-fra.com

Masquer/afficher les contrôles du personnaliseur en fonction d'autres paramètres du personnalisateur

Cela peut être facile pour ceux qui connaissent jQuery.

Donc, j'ai deux contrôles de personnalisation.

Le premier est lmscore_improved_summary qui est une case à cocher. Et le second est course_instructor_layout.

Donc ce que je veux, c'est cacher course_instructor_layout lorsque lmscore_improved_summary est coché.

C’est donc le code jQuery que j’essaie.

(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 );

Mais fait exactement le contraire de ce que je veux. Il affiche course_instructor_layout lorsque lmscore_improved_summary est coché.

Je connais un peu le javascript, mais jquery est complètement nouveau pour moi.

Aidez-moi, s'il vous plaît.

2
vishal ranjan

vous pouvez définir l'affichage conditionnel sur la définition dans PHP avec quelque chose comme ça:

$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();
    },
]);

si cela ne fonctionne pas dans votre cas, modifiez votre question pour ajouter la définition complète de lmscore_improved_summary et course_instructor_layout.

2
Jeanne Kidaw