it-swarm.com.de

Wie kann ich ein ']' in einem Funktionscode umgehen?

Wie kann ich eine rechte Klammer in einem Funktionscode umgehen?

Ich arbeite an einem Google Map-Plugin, das Punkte codiert hat. Manchmal haben die Polygone das] darin, was WP denken lässt, dass es das Ende des Shortcodes ist.

Zum Beispiel:

[my_shortcode latitude='36.93'  longitude='-72.98' encoded_points='ortlF~g]tM?cZEH`z]}|@DQfi]' ]

Ich habe ] ausprobiert, was für WP kein Problem darstellt, aber für meinen Google-Kartencode ein Problem darstellt. Ich könnte Regex verwenden, um] zu ersetzen, aber vielleicht gibt es einen einfacheren Weg. Hat der Shortcode ein Escape-Zeichen?

15
Laxmidi

Ich kenne keine offizielle Escape-Syntax für Shortcodes und wahrscheinlich gibt es keine.

Wenn WordPress nach Shortcodes sucht, sucht es nach [und] . Wenn Sie eckige Klammern innerhalb eines Shortcodes verwenden möchten, verwenden Sie die entsprechenden Entities html ASCII , um sie zu maskieren.

Das heißt Ersetzen von [durch [ und] durch ]. Wordpress erkennt ] nicht als das Ende des Shortcodes.

Ob dies Ihrem Zweck dient, hängt natürlich davon ab, ob es in] konvertiert wird, bevor es an die Google Maps-API übergeben wird, oder ob die API es erwartungsgemäß verarbeitet. Ich habe keine Erfahrung damit, kann also nicht sagen.

16
Johannes Pille

Basierend auf der Antwort von Johannes Pille gibt es die Funktion wp, mit der eckige Klammern für die Verwendung von Text in Shortcode-Parametern ausgeblendet werden:

function my_esc_brackets($text = ''){
    return str_replace( [ "[" , "]" ] , [ "[" , "]" ] , $text );
}

Oft schlagen die Leute vor, den $ -Inhalt des Shortcodes für Textparameter zu verwenden, aber es gibt Fälle, in denen der Shortcode viele solcher Textparameter enthält.

2
DocSS

Hier scheint es eine offizielle Seite zu geben: Escaping Shortcodes

Extrakt :

Um dies zu tun, müssen Sie den Shortcode umgehen, indem Sie zwei Sätze von Klammern anstelle von nur einer verwenden. So zeigen Sie dies in Ihrem Beitrag an:

[Galerie]

Du würdest folgendes schreiben:

[[Galerie]]

1
Guillaume Husta

Auch wenn Sie NICHT mit url spielen, verwenden Sie urldecode (Ihr attribute_value) mit% 5B und% 5D als Ersatz für [und] in Ihrem attribute_value.

Ihr Code könnte dann so aussehen:

Auf deiner WP-Seite: [my_shortcode myattr="%5Bmyattribute_value%5D"]

Führen Sie dann in Ihrer Shortcode-Funktion Folgendes aus:

 $origvalue=urldecode($atts['myattr']);

Dadurch werden die Zeichen [und] im $ origvalue wiederhergestellt, sodass $ origvalue jetzt Folgendes enthält: [myattribute_value]

TIPP: Wenn Sie mit der URL spielen, machen Sie dasselbe, aber fügen Sie dem Funktionscode Folgendes hinzu:

$urlvalue = urlencode($origvalue);

Wenn das nicht klar ist: JA, ich mache urlencode (urldecode (irgendein Wert von $ atts)), um einen korrekten Teil einer URL zu erstellen.

Ganz einfach, hoffe das hilft.

Pierre

0
Pierre13fr