web-dev-qa-db-fra.com

Création de blocs conditionnels pour WordPress Gutenberg

J'ai passé en revue des didacticiels sur la création de blocs pour Gutenberg, mais je ne sais pas comment gérer un cas d'utilisation particulier - les blocs conditionnels.

Je cherche à créer un type de message personnalisé pour lequel je vais enregistrer mon propre type de bloc. Ces blocs ne seront affichés que si certaines conditions sont vraies. Ces conditions seront soit des drapeaux booléens, soit des comparaisons d’entiers (les valeurs provenant de variables utilisateur personnalisées (méta) ou de session).

Si toutes les conditions sont vraies, le bloc doit être rendu, mais si une ou plusieurs sont fausses, rien ne s'affiche (évidemment).

Je n'arrive pas vraiment à comprendre où je placerais la logique pour cela. Certes, ma compréhension de ce nouveau système Gutenberg est un peu fragile, ce qui explique probablement pourquoi j’ai besoin d’aide.

Par exemple:

<p logic="IF(is_logged_in,SHOW,HIDE)">My wonderful secret bit just for members.</p>

Dans la méthode d'édition de votre bloc personnalisé, vous pouvez utiliser le modèle "conditionnel + &&" lors du rendu des composants:

    <PanelBody title={ __( 'My Panel' ) } >

        { myCustomBool &&
            <MyComponent
                value={theValue}
                onChange={ value => {
                    myChangeCallback(value);
                } }
            />
        }
        { 'marmots' !== myCustomThing &&
            <MyOtherComponent
                value={theValue}
                onChange={ value => {
                    myOtherCallback(value);
                } }
            />
        }

    </PanelBody>

Dans l'exemple ci-dessus, les conditions précédant juste le "&&" détermineront si le composant ci-dessous sera rendu.

Ceci est parfois appelé "condition de court-circuit".

1
SkyShab

Si vous souhaitez donner à l'éditeur le contrôle sur les blocs affichés pour les utilisateurs connectés, vous pouvez utiliser ce plugin: https://wordpress.org/plugins/block-options/

Ensuite, vous n'avez pas besoin de le coder dans votre bloc, car chaque bloc aura la possibilité d'être uniquement pour vos membres ou non.

0
David