Comment échapper à un ']' dans un code court?

13

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

Je travaille sur un plug-in Google Map comportant des points codés. Parfois, les polygones contiennent le], ce qui fait penser à WP 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é ] , ce qui ne pose pas de problème pour WP, mais 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?

    
posée Laxmidi 17.11.2011 - 06:18

5 réponses

15

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 abrégé, utilisez les entités ASCII html respectives qui leur échappent.

I.e. en remplaçant [ par [ et ] par ] . Wordpress ne reconnaîtra pas ] à la fin du shortcode.

Si cela vous convient, cela dépend évidemment de savoir si le fichier est converti en ] avant d'être transmis à l'API Google Maps ou si l'API le gère comme prévu. Je n'ai aucune expérience dans ce domaine, je ne peux donc pas le dire.

    
réponse donnée Johannes Pille 17.11.2011 - 09:03
2

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 comporte de nombreux paramètres de texte de ce type.

    
réponse donnée DocSS 11.03.2017 - 16:23
1

Il semble y avoir une page officielle à cet endroit: Échapper à des codes courts

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 message:

     

[galerie]

     

Vous écririez ceci:

     

[[galerie]]

    
réponse donnée Guillaume Husta 20.11.2018 - 17:09
0

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

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']);

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

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

$urlvalue = urlencode($origvalue);

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

Assez simple, espérons que cela vous aidera.

Pierre

    
réponse donnée Pierre13fr 26.12.2017 - 13:25
-1

Ceci est une vieille question, mais voici une solution de contournement utilisant css. Au lieu d'accolades, placez des caractères dans une étendue, comme suit:

<span class="bracket">some string</span>

ajoutez ensuite ceci à la feuille de style du thème:

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

le résultat ressemblera à ceci:

[some string]

    
réponse donnée yitwail 21.09.2014 - 04:07

Lire d'autres questions sur les étiquettes