Wie kann ich einem ‘]’ in einem kurzen Code entkommen?

Wie entkomme ich einer rechten Klammer in einem kurzen Code?

Ich arbeite an einem Google Map-Plugin mit codierten Punkten. Manchmal haben die Polygone das] darin, was WP denkt, dass es das Ende des Shortcodes ist.

Beispielsweise:

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

Ich habe es versucht ] Das ist kein Problem für WP, aber es verursacht ein Problem für meine Google Map-Code. Ich könnte Regex verwenden, um zu ersetzen], aber vielleicht gibt es einen einfacheren Weg. Hat der Shortcode einen Escape-Charakter?

Solutions Collecting From Web of "Wie kann ich einem ‘]’ in einem kurzen Code entkommen?"

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

Wenn WordPress nach Shortcodes sucht, sucht es nach [ und ] . Wenn Sie eckige Klammern innerhalb eines Shortcodes verwenden möchten, können Sie mit den entsprechenden html-ASCII-Entities umgehen.

Ich ersetze [ durch [ und ] von ] . WordPress erkennt ] als das Ende des Shortcodes.

Ob das Ihrem Zweck dient, hängt natürlich davon ab, ob es in ] konvertiert wird, bevor es an das Google Maps-API übergeben wird oder ob es von der API wie erwartet gehandhabt wird. Ich habe damit keine Erfahrung, kann also nicht sagen.

Basierend auf der Antwort von Johannes Pille gibt es die function wp, um eckige Klammern für die Verwendung von Text in Kurzwahlparametern zu vermeiden:

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

Oft wird vorgeschlagen, den Shortcodes $ Inhalt für Textparameter zu verwenden, aber es gibt Fälle, in denen der Shortcode viele solche Textparameter hat.

Auch wenn Sie NICHT mit URL spielen, verwenden Sie URL- Code (Ihr Attributwert) mit% 5B und% 5D als Ersatz für [und] in Ihrem Attributwert.

Ihr Code könnte dann so aussehen:

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

Dann tun Sie das in Ihrer Shortcode-function:

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

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

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

 $urlvalue = urlencode($origvalue); 

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

Ganz einfach, hoffe das hilft.

Pierre

Dies ist eine alte Frage, aber hier ist ein Workaround mit CSS. Anstelle von geschweiften Klammern müssen Sie Zeichen in einem Bereich einschließen:

some string

Fügen Sie das dann dem Design-Stylesheet hinzu:

 span.bracket:before { content: '[' } .colored-blocks span.bracket:after { content: ']' } 

Das Ergebnis sieht folgendermaßen aus:

[some string]