Erstellen von bedingten Blöcken für WordPress Gutenberg

7

Ich habe Tutorials zum Erstellen von Blöcken für Gutenberg durchgesehen, bin mir jedoch nicht sicher, wie ich mit einem bestimmten Anwendungsfall umgehen soll - bedingte Blöcke.

Ich möchte einen benutzerdefinierten Beitragstyp erstellen, für den ich meinen eigenen Blocktyp registrieren werde. Diese Blöcke werden nur angezeigt, wenn bestimmte Bedingungen erfüllt sind. Diese Bedingungen sind entweder boolesche Flags oder ganzzahlige Vergleiche (die Werte, die von verwelkten benutzerdefinierten Benutzervariablen (Meta) oder Sitzungswerten stammen).

Wenn alle Bedingungen wahr sind, sollte der Block gerendert werden, aber wenn eine oder mehrere falsch sind, wird (offensichtlich) nichts angezeigt.

Ich kann mir nicht vorstellen, wo ich die Logik dafür platzieren würde. Zugegeben, mein Verständnis für dieses neue Gutenberg-System ist etwas wackelig, weshalb ich wahrscheinlich Hilfe brauche.

Zum Beispiel:

<p logic="IF(is_logged_in,SHOW,HIDE)">My wonderful secret bit just for members.</p>
Matthew Brown alias Lord Matt
quelle
Meinen Sie einen Block, der sich bereits im Beitragsinhalt oder stattdessen in der Appender-Liste befindet, oder einen Block, der Teil der Seitenvorlage ist? Wenn Sie den genauen Fall angeben könnten, wäre es möglicherweise einfacher, eine Lösung zu finden.
Alvaro
Nur ein Block, der Teil des Beitragsinhalts ist. Zum Beispiel IF (SomeCondition!=TRUE): Don't show this paragraph.
Matthew Brown alias Lord Matt
2
Vielleicht kann dieser Ansatz helfen?
Birgire
1
Ich denke, das wird gut gehen.
Matthew Brown alias Lord Matt
Sie können auch Blöcke verschachteln (die untergeordneten Blöcke werden nur innerhalb des übergeordneten Blocks geladen, wodurch eine Bedingung erstellt wird). Weitere Informationen finden Sie in den Spalten und Spaltenblöcken im Kern. Die ALLOWED_BLOCKS- Konstante kann verwendet werden, um zu steuern, welche Blöcke innerhalb eines Blocks verwendet werden dürfen
admcfajn

Antworten:

2

In der Bearbeitungsmethode für Ihren benutzerdefinierten Block können Sie beim Rendern der Komponenten das Muster "Bedingtes + &&" verwenden:

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

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

    </PanelBody>

Im obigen Beispiel bestimmen die Bedingungen unmittelbar vor dem "&&", ob die folgende Komponente gerendert wird.

Dies wird manchmal als "Kurzschlussbedingung" bezeichnet.

SkyShab
quelle
0

Wenn Sie dem Editor die Kontrolle darüber geben möchten, welche Blöcke angemeldeten Benutzern angezeigt werden oder nicht, können Sie dieses Plugin verwenden: https://wordpress.org/plugins/block-options/

Dann müssen Sie es nicht in Ihren Block codieren, da jeder Block die Option hat, nur für Ihre Mitglieder zu sein oder nicht.

David
quelle
Das ist schön für diejenigen, die das alles wollen. Ich suche speziell nach Möglichkeiten, bedingte Logik zu erstellen.
Matthew Brown alias Lord Matt