¿Cómo puedo escapar de un ']' en un código corto?

13

¿Cómo puedo escapar de un corchete derecho en un código corto?

Estoy trabajando en un complemento de Google Map que tiene puntos codificados. A veces, los polígonos tienen la], lo que hace que WP piense que es el final del código corto.

Por ejemplo:

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

He intentado ] que no está causando un problema para WP, pero está causando un problema para mi código de mapa de Google. Podría usar Regex para reemplazar], pero tal vez haya una forma más simple. ¿Shortcode tiene un carácter de escape?

    
pregunta Laxmidi 17.11.2011 - 06:18

5 respuestas

15

No conozco una sintaxis de escape oficial para códigos cortos y es probable que no haya una.

Cuando wordpress analiza los códigos cortos, busca [ y ] . Si desea utilizar corchetes dentro de un código abreviado, utilice las respectivas html ASCII entidades para evitarlos.

I.e. reemplazando [ por [ y ] por ] . Wordpress no reconocerá ] como el final del código abreviado.

El hecho de que sirva para su propósito obviamente depende de si se convierte a ] antes de pasar a la API de Google Maps o si la API se maneja como se espera. No tengo experiencia con eso, así que no puedo decirlo.

    
respondido por el Johannes Pille 17.11.2011 - 09:03
2

Según la respuesta de Johannes Pille, hay una función wp para escapar de los corchetes para usar texto en parámetros de código abreviado:

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

A menudo, la gente sugiere usar $ content de shortcode para los parámetros de texto, pero hay casos en que el shortcode tiene muchos de estos parámetros de texto.

    
respondido por el DocSS 11.03.2017 - 16:23
1

Parece que hay una página oficial aquí: Shortcodes de escape

Extraer:

  

Para hacer esto, necesitas escapar del código abreviado usando dos conjuntos de   corchetes en lugar de sólo uno. Así que para mostrar esto en tu publicación:

     

[galería]

     

Escribirías esto:

     

[[galería]]

    
respondido por el Guillaume Husta 20.11.2018 - 17:09
0

Incluso si NO estás jugando con url, usa urldecode (tu attribute_value) con% 5B y% 5D como reemplazo de [y] en tu attribute_value.

Tu código puede verse así:

En tu página wp: [my_shortcode myattr="%5Bmyattribute_value%5D"]

Luego, en su función de código abreviado, simplemente haga esto:

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

Esto restaurará los caracteres [y] en el $ origvalue, de modo que $ origvalue ahora contiene: [myattribute_value]

CONSEJO: si estás jugando con url, haz lo mismo, pero agrega lo siguiente al código de función:

$urlvalue = urlencode($origvalue);

Si eso no está claro: SÍ, estoy haciendo urlencode (urldecode (un valor de $ atts)) para crear una parte correcta de una url.

Bastante simple, espero que esto ayude.

Pierre

    
respondido por el Pierre13fr 26.12.2017 - 13:25
-1

Esta es una pregunta antigua, pero aquí hay una solución al usar css. En lugar de llaves, encierre los caracteres en un espacio, de esta manera:

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

luego, agrega esto a la hoja de estilo del tema:

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

el resultado se verá así:

[some string]

    
respondido por el yitwail 21.09.2014 - 04:07

Lea otras preguntas en las etiquetas