web-dev-qa-db-fra.com

Comment puis-je échapper à un ']' dans un code court?

Comment puis-je échapper à un crochet droit dans un code court?

Je travaille sur un plugin Google Map comportant des points codés. Parfois, les polygones contiennent le], ce qui fait que WP pense que c'est la fin du shortcode.

Par exemple:

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

J'ai essayé ] qui ne pose pas de problème pour WP, mais cela pose un problème pour mon code de carte Google. Je pourrais utiliser Regex pour remplacer], mais il existe peut-être un moyen plus simple. Le shortcode a-t-il un caractère d'échappement?

15
Laxmidi

Je ne connais pas de syntaxe d'échappement officielle pour les codes courts et il n'y en a probablement pas.

Lorsque wordpress analyse les codes courts, il recherche [et] . Si vous souhaitez utiliser des crochets dans un code court, utilisez les entités html ASCII respectives les échappe.

C'est à dire. en remplaçant [par [ et] par ]. Wordpress ne reconnaîtra pas ] à la fin du shortcode.

Que cela réponde à votre objectif dépend évidemment de la conversion en] avant de la transmettre à l'API Google Maps ou du fait que l'API le gère comme prévu. Je n'ai aucune expérience avec ça, donc je ne peux pas dire.

16
Johannes Pille

D'après la réponse de Johannes Pille, il existe une fonction wp permettant d'échapper aux crochets pour utiliser du texte dans les paramètres de shortcode:

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

Souvent, les gens suggèrent d'utiliser le contenu $ de shortcode pour les paramètres de texte, mais il existe des cas où le shortcode contient de nombreux paramètres de texte de ce type.

2
DocSS

Il semble y avoir une page officielle ici: Escaping Shortcodes

Extrait :

Pour ce faire, vous devez échapper au shortcode en utilisant deux ensembles de crochets au lieu d'un seul. Donc, pour afficher ceci dans votre post:

[Galerie]

Vous écririez ceci:

[[Galerie]]

1
Guillaume Husta

Même si vous ne jouez PAS avec url, utilisez urldecode (votre attribut_value) avec% 5B et% 5D utilisé en remplacement de [et] dans votre attribut_value.

Votre code peut alors ressembler à ceci:

Dans votre page wp: [my_shortcode myattr="%5Bmyattribute_value%5D"]

Ensuite, dans votre fonction de shortcode, procédez comme suit:

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

Cela restaurera les caractères [et] dans la $ origvalue, de sorte que $ origvalue contienne maintenant: [myattribute_value]

CONSEIL: Si vous jouez avec une URL, faites la même chose, mais ajoutez ce qui suit au code de fonction:

$urlvalue = urlencode($origvalue);

Si ce n'est pas clair: OUI, je fais urlencode (urldecode (une valeur de $ atts)) pour construire une partie correcte d'une url.

Assez simple, espérons que cela aide.

Pierre

0
Pierre13fr