Como faço para escapar de um ']' em um código curto?


17

Como escapar de um colchete direito em um código curto?

Estou trabalhando em um plug-in do Google Map que codificou pontos. Às vezes, os polígonos têm]], o que faz o WP pensar que é o fim do código de acesso.

Por exemplo:

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

Eu tentei o ]que não está causando problemas no WP, mas está causando um problema no meu código de mapa do Google. Eu poderia usar o Regex para substituir], mas talvez haja uma maneira mais simples. Shortcode tem um caractere de escape?

Respostas:


18

Não conheço uma sintaxe oficial de escape para códigos de acesso e provavelmente não existe uma.

Quando o wordpress analisa códigos de acesso, ele procura [ e ] . Se você deseja usar colchetes dentro de um código curto, o uso das respectivas entidades ASCII html os escapa.

Ou seja, substituindo [ por [e ] por ]. O Wordpress não reconhecerá ]como o final do código curto.

Se isso serve a seu objetivo, obviamente, depende se ele é convertido em ] antes de ser passado para a API do Google Maps ou se a API lida com isso conforme o esperado. Eu não tenho experiência com isso, então não posso dizer.


Obrigado pela resposta. Na minha pergunta, esqueci de colocar '& # 93;' em um bloco de código, então saiu como um ']'. Eu editei minha pergunta. A entidade HTML funciona para o WP, mas não para o Google Maps. Vou ter que usar o Regex para substituir as entidades HTML. Muito obrigado pela ajuda.
Laxmidi 17/11

@Laxmidi Meu "palpite" acima, de que não há limites de caracteres de escape com certeza - só queria ser cauteloso para não fornecer informações erradas. Se houver, tenho certeza de que o artigo do codex na API Shortcode o mencionaria. Eu acho que substituir depois é a sua melhor aposta. Você precisa de uma regex para um personagem? Eu acho que str_replace()deveria fazer o trabalho também. Seria menos recursos intensivos, se o fizesse.
Johannes Pille

11
@JohannesPille Olá, é uma velhice, mas preciso que o [] também seja substituído por & # 93 ;. Salvando pela primeira vez no WP e funciona, mas ao editar a postagem / página, o WP vira & # 93; para dentro ]. (precisa deste para um acompanhamento do Google evento em botões shortcode) diz respeito
alex

Como o @alex disse, se você alternar para a guia visual e retornar à guia de código, verá que tinyMCE altera os caracteres especiais de volta para [], quebrando o código.
Saulo Padilha


2

Com base na resposta de Johannes Pille, existe a função wp para escapar de colchetes ao usar texto em parâmetros de shortcode:

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

Muitas vezes, as pessoas sugerem o uso do conteúdo $ do shortcode para parâmetros de texto, mas há casos em que o shortcode possui muitos desses parâmetros de texto.


2

Parece haver uma página oficial aqui: Escapando códigos de acesso

Extrair :

Para fazer isso, você precisa escapar do código de acesso usando dois conjuntos de colchetes em vez de apenas um. Então, para exibir isso em sua postagem:

[galeria]

Você escreveria isto:

[[galeria]]


0

Mesmo se você NÃO estiver brincando com url, use urldecode (your attribute_value) com% 5B e% 5D usados ​​como substitutos para [e] em seu attribute_value.

Seu código pode ficar assim:

Na sua página wp: [my_shortcode myattr="%5Bmyattribute_value%5D"]

Então, na sua função shortcode, faça o seguinte:

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

Isso restaurará os caracteres [e] no $ origvalue, para que $ origvalue agora contenha: [myattribute_value]

DICA: se você estiver jogando com url, faça o mesmo, mas adicione o seguinte ao código da função:

$urlvalue = urlencode($origvalue);

Se isso não estiver claro: SIM, estou usando o urlencode (urldecode (algum valor de $ atts)) para criar uma parte correta de um URL.

Muito simples, espero que isso ajude.

Pierre


-1

Esta é uma pergunta antiga, mas aqui está uma solução alternativa usando o css. No lugar de chaves, coloque os caracteres em um intervalo, da seguinte maneira:

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

adicione isso à folha de estilo do tema:

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

o resultado ficará assim:

[some string]


3
A questão é sobre a inserção ]como parte do conteúdo, não sobre como exibi-lo.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.