私は以下のショートコードを持っています:
function infobox_shortcode( $atts, $content = null ) {
extract( shortcode_atts( array(
'src' => '',
'title' => '',
'text' => '',
), $atts, 'infobox' ) );
$return = '<div class="infobox clearfix"><div class="col-md-1 infobox-image"><img src="'.$src.'" alt="'.$title.'"/></div><div class="col-md-8 infobox-content"><h2> ' . $title . '</h2><p>' . $text . '</p></div></div>';
return $return;
}
add_shortcode( 'infobox', 'infobox_shortcode' );
ユーザーがこのように単純に使用すると、これはうまく機能します。
[infobox src="http://www.google.com" title="Google" text="Some description"]
しかし:
ユーザーが追加を試みるとすぐにショートコードへの引用符付きのリンク、それは - もちろん - 壊れます:
[infobox src="http://www.google.com" title="Google" text="Some description - see more: <a href="http://www.google.com">More here</a>"]
問題は、私のユーザーがWPエディタを使用してリンクを追加しているため、二重引用符が表示されることです。 Alsor WordPressは、デフォルトでは属性の一重引用符を削除し、二重引用符を追加して、それから私のショートコードを壊します。
現時点で私はこれに対して2つの解決策を見ていますが、両方ともまったく満足できるものではありません。
a)WPに、投稿を保存している間はhrefリンクで一重引用符を二重引用符に変換しないように指示する、またはb)二重引用符でショートコードを機能させるには。
他に何かヒントや回避策はありますか。
ありがとうございます。
マイク
いずれにせよ、これはショートコードでの任意のマークアップのためのとても不格好な解決策のように思えます。
1つの属性だけがもっと大きく、マークアップを含んでいる場合は、ショートコードを囲むことを検討します。
[infobox src="http://www.google.com" title="Google"]
Some description - see more: <a href="http://www.google.com">More here</a>
[/infobox]
あなたがカスタムUIを構築する必要があるときにはポイントになるかもしれませんし、そうでなければそれはユーザーにとってあまりにも間違いを起こしやすいでしょう。