Gibt es eine Möglichkeit, ein leeres Attribut für einen Shortcode zu erstellen?
Beispiel:
function paragraph_shortcode( $atts, $content = null ) {
return '<p class="super-p">' . do_shortcode($content) . '</p>';
}
add_shortcode('paragraph', 'paragraph_shortcode');
Benutzertypen
[Absatz] etwas [/ Absatz]
und es zeigt
<p class="super-p"> something </p>
Wie füge ich meinem ersten Code eine leere Attributfunktion hinzu? Also wenn Benutzer tippt
[Absatz zuletzt] etwas [/ Absatz]
Es wird ausgegeben:
<p class="super-p last"> something </p>
Ich glaube, ein:
extract( shortcode_atts( array(
'last' => '',
), $atts ) );
ist ein guter Anfang, aber wie kann man überprüfen, ob der Benutzer das Attribut "last" verwendet hat, während es keinen Wert hat?
[example last]
aus[example whatever="last"]
, da sie Werte und ignoriert Indizes überprüft.Wenn
[example attr1="value1" attr2 attr3="value3" attr4]
analysiert wird,$atts
ergibt der Parameter:Sie können dies so normalisieren, dann können Sie es aufrufen
shortcode_atts
.Weitere Hinweise:
[paragraph last]
würde machen$last = true
.[paragraph last="1"]
würde machen$last = '1'
.[paragraph LAST]
berücksichtigt[paragraph last]
.foreach
mir erstellte Schleife gegen ganzzahlig indizierte Attribute sicher.quelle
Ich weiß, dass dies alt ist, aber ich hatte nicht das Gefühl, dass eine der Antworten vollständige, kompakte Antworten waren. Viele Leute schlagen vor, das
$atts
Array durch ein foreach zu führen, um festzustellen, ob Ihr Wert vorhanden ist. In Wirklichkeit muss es nicht so kompliziert sein. array_search könnte stattdessen verwendet werden, um die Dinge zu vereinfachen.In Ihrem Beispiel könnten Sie Folgendes verwenden:
[paragraph last] something [/paragraph]
Um festzustellen, ob das leere Attribut bereitgestellt wird, überprüfen Sie anhand einer Grundbedingung, ob der Schlüssel null oder eine Ganzzahl (einschließlich Null) zurückgegeben hat:
quelle
Ich fand dies: http://richjenks.com/wp-shortcode-attributes-without-values/
CODE
VERWENDUNGSZWECK
quelle
Die hier akzeptierte Antwort ist sowohl falsch als auch richtig. Der Satz:
Dies gilt nur für die
shortcode_atts
Funktion und nicht für die gesamte WP-Shortcode-Funktionalität.Wenn Sie sich den folgenden Code ansehen:
Eine Short Nutzung wie
[paragraph last] something [/paragraph]
wird immer einen Wertfalse
für die$isLast
var.Das Problem ist , dass , wenn die
shortcode_atts
Funktion läuft es nicht die Attribute ohne Werte zu verwerfen. Sie befinden sich jedoch vor diesem Punkt absolut im$atts
Array . A von als erste Zeile der Funktion würde erzeugen:var_dump
$atts
custom_shortcode_paragraph
Das 0. Element im Array ist also eine Zeichenfolge des Attributnamens, die in Kleinbuchstaben geschrieben werden muss.
Ändern wir stattdessen den Code wie folgt:
Sie haben jetzt
$atts['last'] === true && $isLast === true
für den Shortcode:Wenn Sie am Ende einen Wert hinzufügen, lautet der Shortcode:
würde yeild
$atts['last'] === "any value at all" && $isLast === true
.$last
wäre,false
weil das$atts
Array am Anfang den Inhalt hat:Der Wert des Array-Elements ist also nicht mehr der Attributname, und
in_array('last', $atts) === false
der Standardwertshortcode_atts
ist false. aber das ist nur ein Standard , der von der Ist - Wert wird überschriebenany value at all
und dann$atts['last'] !== false
isttrue
da"any value at all" !== false
.Alles in allem denke ich, dass dies das tut, was Sie wollen und unempfindlich gegen Benutzerfehler ist.
quelle