Это было бы неплохо исправить!У меня нет достаточного количества представителей, чтобы комментировать, поэтому я оставляю следующую связанную ссылку WordPress Trac, возможно, она совпадает с той, что вы имели в виду: http://core.trac.wordpress.org/ticket/14481
Я надеюсь, что любое исправление разрешит синтаксис шорткодакак
[shortcode att1 = "val] ue"] content [/ shortcode]
, поскольку в версии 3.0.1 содержимое $ неправильно обрабатывается как ue"]content
вместо * content
Обновление : потратив время на изучение правил (регулярных выражений?), Я позволил разрешить] и экранированные кавычки в стиле Паскаля (например, arg = 'that' [так] здорово') в этих аргументах с 2 изменениями: сначала измените группу (.*?)
в первом регулярном выражении (get_shortcode_regex
) на
((?:[^'"\]]|'[^']*'|"[^"]*")*)
(NB: убедитесь, что вы все правильно экранировали в своем php-коде), затемв shortcode_parse_atts
(функция, содержащая второе регулярное выражение) измените следующее (опять же, измените '
на \'
, если в одинарных кавычках $pattern
как в исходном коде)
in $pattern change "([^"]*)" to "((?:[^"]|"")*)"
in $pattern change '([^']*)' to '((?:[^']|'')*)'
$atts[strtolower($m[1])] = preg_replace('_""_', '"', stripcslashes($m[2]));
$atts[strtolower($m[3])] = preg_replace("_''_", "'", stripcslashes($m[4]));
NBеще раз: изменения в шаблоне могут основываться на жадном характере соответствия, так что если этот параметр когда-либозависание, измененные биты $pattern
могут заканчиваться чем-то вроде (?!")
и т. д.