• 解決済 nobita

    (@nobita)


    こんにちは
    画像を投稿に挿入する caption ショートコード を 使ってみていますが、連続して記述すると、2つ目のショートコードが動作しません。

    私の環境だけでそうなっているのかどうか知りたいのですが、よろしくお願いします。

    壊れるパターン

    [caption id="attachment_544" align="aligncenter" width="435" caption="A picture is worth a thousand words"]<a href="http://www.example.com/wp/wp-content/uploads/boat.jpg"><img src="http://www.example.com/wp/wp-content/uploads/boat.jpg" alt="" title="boat" width="435" height="288" class="size-full wp-image-544" /></a>[/caption]
    
    [caption id="attachment_544" align="aligncenter" width="435" caption="A picture is worth a thousand words"]<a href="http://www.example.com/wp/wp-content/uploads/boat.jpg"><img src="http://www.example.com/wp/wp-content/uploads/boat.jpg" alt="" title="boat" width="435" height="288" class="size-full wp-image-544" /></a>[/caption]

    正常なパターン

    [caption id="attachment_544" align="aligncenter" width="435" caption="A picture is worth a thousand words"]<a href="http://www.example.com/wp/wp-content/uploads/boat.jpg"><img src="http://www.example.com/wp/wp-content/uploads/boat.jpg" alt="" title="boat" width="435" height="288" class="size-full wp-image-544" /></a>[/caption]
    ここに改行以外の文字を入れる
    [caption id="attachment_544" align="aligncenter" width="435" caption="A picture is worth a thousand words"]<a href="http://www.example.com/wp/wp-content/uploads/boat.jpg"><img src="http://www.example.com/wp/wp-content/uploads/boat.jpg" alt="" title="boat" width="435" height="288" class="size-full wp-image-544" /></a>[/caption]

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • kz

    (@kz)

    ウチ(WP3.1)ではショートコード間に何か文字が無いと、2
    つめのショートコードが変換されずにそのまま出力されます。

    ショートコードに一致する正規表現が
    wp-includes/shortcodes.php 179行目:

    return '([^\]]?)\[('.$tagregexp.')\b(.*?)(?:(\/))?\](?:(.+?)\[\/\2\])?([^\[]?)';

    ってなってるので、[]の前後に何か1文字があると、それもこのパターンに含んでしまいます多分。

    で、今回の場合は1つめで

    [caption]なんちゃら[/caption][

    まで一致したよ、ってなるので2つめが無視されてます多分。

    そこで、コアソースの当該部分を

    return '([^\[]?)\[('.$tagregexp.')\b(.*?)(?:(\/))?\](?:(.+?)\[\/\2\])?([^\[]?)';

    と書き換えてみると2つのショートコードが正しく置換されました。

    前後に「何か1文字」でなくて、][ 以外の何か1文字、です。

    そもそも前後に1文字がいらんのちゃうんか、って消す方向なら

    do_shortcode_tag()

    もあわせて変更する必要があったり、
    何らかの不具合に見舞われるオソレがあったりなかったりします。

    トピック投稿者 nobita

    (@nobita)

    kzさん

    前後に「何か1文字」でなくて、][ 以外の何か1文字、です。

    ありがとうございます

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「caption ショートコードの動作がおかしいのですが、私だけですか」には新たに返信することはできません。