web-dev-qa-db-ja.com

短いコードで ']'をエスケープするにはどうすればいいですか?

短いコードで右かっこをエスケープする方法

私はポイントをエンコードしたGoogle Mapプラグインを開発中です。多角形の中に]があることがあり、それがWPにそれがショートコードの終わりだと思わせる。

例えば:

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

]を試してみましたが、これはWPには問題を引き起こしていませんでしたが、私のGoogleマップコードには問題を引き起こしています。正規表現を使って]を置き換えることもできますが、もっと簡単な方法があるかもしれません。ショートコードにはエスケープ文字がありますか?

15
Laxmidi

私は、ショートコードの正式なエスケープ構文を知らないし、おそらくないでしょう。

ワードプレスがショートコードを解析するとき、 [ および ] を探します。ショートコード内で角括弧を使用したい場合は、それぞれの html ASCIIエンティティを使用して エスケープします。

すなわち [ [に、 ] ]に置き換えます。 Wordpressは、]をショートコードの終わりとして認識しません。

それがあなたの目的にかなうかどうかは明らかにそれがGoogle Maps APIに渡される前に ] に変換されるかどうか、あるいはAPIがそれを期待通りに処理するかどうかに依存します。私はそれを経験していないので、言うことはできません。

16
Johannes Pille

Johannes Pilleの答えに基づいて、ショートコードパラメータでテキストを使用するための角括弧をエスケープするためのwp関数があります。

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

多くの場合、ショートコードの$コンテンツをテキストパラメータに使用することをお勧めしますが、ショートコードにそのようなテキストパラメータが多数ある場合があります。

2
DocSS

ここに公式ページがあるようです: エスケープショートコード

抜粋:

これを行うには、1つではなく2つの括弧を使ってショートコードをエスケープする必要があります。だからあなたの投稿にこれを表示するには:

[ギャラリー]

あなたはこれを書くでしょう:

[[gallery]]

1
Guillaume Husta

あなたがurlで遊んでいなくても、 urldecode(あなたのattribute_value)を%5Bと%5D と共にあなたのattribute_valueの[と]の代わりに使ってください。

あなたのコードは次のようになります。

あなたのwpページで:[my_shortcode myattr="%5Bmyattribute_value%5D"]

それから、あなたのショートコード関数で、これをするだけです:

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

これにより、$ origvalueの[と]の文字が復元されるため、$ origvalueには次の文字列が含まれるようになります。[myattribute_value]

ヒント:あなたがurlで遊んでいるならば、同じことをしなさい、しかし機能コードに以下を加えなさい:

$urlvalue = urlencode($origvalue);

それが明確ではない場合:はい、URLの正しい部分を作成するためにurlencode(urldecode($ attsからの値))を実行しています。

非常に単純な、これが役立つことを願っています。

ピエール

0
Pierre13fr