Comment échapper à une parenthèse droite dans un code court?
Je travaille sur un plugin Google Map qui a encodé des points. 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 cela cause un problème pour mon code Google map. 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?
str_replace()
devrait aussi faire le travail. Ce serait moins gourmand en ressources, si c'était le cas.Sur la base de la réponse de Johannes Pille, il existe une fonction wp pour échapper aux crochets pour l'utilisation de texte dans les paramètres de shortcode:
Souvent, les gens suggèrent d'utiliser le contenu $ du shortcode pour les paramètres de texte, mais il y a des cas où le shortcode a beaucoup de tels paramètres de texte.
la source
Il semble y avoir une page officielle ici: Escaping Shortcodes
Extrait :
la source
Même si vous ne jouez PAS avec l'URL, utilisez urldecode (votre valeur_attribut) avec% 5B et% 5D utilisés en remplacement de [et] dans votre valeur_attribut.
Votre code peut alors ressembler à ceci:
Dans votre page wp:
[my_shortcode myattr="%5Bmyattribute_value%5D"]
Ensuite, dans votre fonction de shortcode, faites simplement ceci:
Cela restaurera les caractères [et] dans $ origvalue, de sorte que $ origvalue contienne maintenant:
[myattribute_value]
CONSEIL: Si vous jouez avec l'URL, faites de même, mais ajoutez ce qui suit au code de fonction:
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, j'espère que cela vous aidera.
Pierre
la source
C'est une vieille question, mais voici une solution de contournement en utilisant CSS. Au lieu des accolades, placez les caractères dans une plage, comme ceci:
<span class="bracket">some string</span>
puis ajoutez ceci à la feuille de style du thème:
le résultat ressemblera à ceci:
[some string]
la source
]
dans le contenu, et non sur la façon de l'afficher.