it-swarm.com.de

Übergeben Sie einen booleschen Wert als Shortcode

Wie kann ich in WordPress-Shortcodes boolesche Attribute übergeben?
Sowohl [shortcode boolean_attribute="true"] als auch [shortcode boolean_attribute=true] geben Zeichenfolgenwerte an.

BEARBEITEN

Es wäre kein Problem für Benutzer, die wissen, was sie tun, wenn ich den von @brasofilo kommentierten Trick verwende. Einige Benutzer gehen jedoch verloren, wenn sie ein Attribut false value angeben und true value erhalten. Gibt es also eine andere Lösung?

14

Ist einfach, 0 und 1 Werte zu verwenden und dann innerhalb der Funktion zu tippen:

[shortcode boolean_attribute='1'] oder [shortcode boolean_attribute='0']

wenn Sie möchten, können Sie auch streng nach 'false' suchen und ihn einem Booleschen Wert zuweisen. Auf diese Weise können Sie auch Folgendes verwenden:

[shortcode boolean_attribute='false'] oder [shortcode boolean_attribute='true']

Dann:

add_shortcode( 'shortcode', 'shortcode_cb' );

function shortcode_cb( $atts ) {
  extract( shortcode_atts( array(
    'boolean_attribute' => 1
  ), $atts ) );
  if ( $boolean_attribute === 'false' ) $boolean_attribute = false; // just to be sure...
  $boolean_attribute = (bool) $boolean_attribute;
}
14
gmazzap

Als Erweiterung zu @ G.M. Antwort (das ist der einzig mögliche Weg, dies zu tun), hier ist eine etwas verkürzte/verschönerte und eine erweiterte Version (die ich persönlich bevorzuge):

Verkürzte/Verschönerte Variante

Es reicht aus, eine boolean Prüfung auf den enthaltenen Wert durchzuführen. Wenn es sich um true handelt, ist das Ergebnis (bool) true, andernfalls ist es falsch. Dies erzeugt eine true für einen Fall, alles andere false Ergebnis.

add_shortcode( 'shortcodeWPSE', 'wpse119294ShortcodeCbA' );
function wpse119294ShortcodeCbA( $atts ) {
    $args = shortcode_atts( array(
        'boolAttr' => 'true'
    ), $atts, 'shortcodeWPSE' );

    $args['boolAttr'] = 'true' === $args['boolAttr'];
}

Erweiterte/Benutzersichere Variante

Der Grund, warum ich diese Version bevorzuge, ist, dass der Benutzer on/yes/1 als Alias ​​für true eingeben kann. Dies verringert die Wahrscheinlichkeit von Benutzerfehlern, wenn sich der Benutzer nicht an den tatsächlichen Wert für true erinnert.

add_shortcode( 'shortcodeWPSE', 'wpse119294ShortcodeCbA' );
function wpse119294ShortcodeCbA( $atts ) {
    $args = shortcode_atts( array(
        'boolAttr' => 'true'
    ), $atts, 'shortcodeWPSE' );

    $args['boolAttr'] = filter_var( $args['boolAttr'], FILTER_VALIDATE_BOOLEAN );
}

Zusätzliche Bemerkungen:

1) Übergeben Sie immer das 3. Argument für shortcode_atts(). Andernfalls kann der Filter für die Shortcode-Attribute nicht ausgewählt werden.

// The var in the filter name refers to the 3rd argument.
apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts );

2) Verwenden Sie niemals extract(). Auch Core will diese Anrufe reduzieren. Bei global Variablen ist dies ebenso schlimmer, da IDEs keine Chance haben, den extrahierten Inhalt aufzulösen, und Fehlermeldungen auslösen.

27
kaiser