短いコードで右かっこをエスケープする方法
私はポイントをエンコードしたGoogle Mapプラグインを開発中です。多角形の中に]があることがあり、それがWPにそれがショートコードの終わりだと思わせる。
例えば:
[my_shortcode latitude='36.93' longitude='-72.98' encoded_points='ortlF~g]tM?cZEH`z]}|@DQfi]' ]
]
を試してみましたが、これはWPには問題を引き起こしていませんでしたが、私のGoogleマップコードには問題を引き起こしています。正規表現を使って]を置き換えることもできますが、もっと簡単な方法があるかもしれません。ショートコードにはエスケープ文字がありますか?
私は、ショートコードの正式なエスケープ構文を知らないし、おそらくないでしょう。
ワードプレスがショートコードを解析するとき、 [ および ] を探します。ショートコード内で角括弧を使用したい場合は、それぞれの html ASCIIエンティティを使用して エスケープします。
すなわち [ を[
に、 ] を]
に置き換えます。 Wordpressは、]
をショートコードの終わりとして認識しません。
それがあなたの目的にかなうかどうかは明らかにそれがGoogle Maps APIに渡される前に ] に変換されるかどうか、あるいはAPIがそれを期待通りに処理するかどうかに依存します。私はそれを経験していないので、言うことはできません。
Johannes Pilleの答えに基づいて、ショートコードパラメータでテキストを使用するための角括弧をエスケープするためのwp関数があります。
function my_esc_brackets($text = ''){
return str_replace( [ "[" , "]" ] , [ "[" , "]" ] , $text );
}
多くの場合、ショートコードの$コンテンツをテキストパラメータに使用することをお勧めしますが、ショートコードにそのようなテキストパラメータが多数ある場合があります。
ここに公式ページがあるようです: エスケープショートコード
抜粋:
これを行うには、1つではなく2つの括弧を使ってショートコードをエスケープする必要があります。だからあなたの投稿にこれを表示するには:
[ギャラリー]
あなたはこれを書くでしょう:
[[gallery]]
あなたが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からの値))を実行しています。
非常に単純な、これが役立つことを願っています。
ピエール