将WordPress更新为4.4.1(托管服务提供商自动执行,meh!)后,我的ShortCode插件(例如YouTube)被破坏并仅打印出ShortCode,即[youtube 1233456],其中数字为视频的ID。我做了一些研究,这看起来与空间reference here有关。 问题是我有一千个帖子要回去解决这个问题。我正在考虑运行preg_replace函数来替换空格字符,但是,运气不好。见下文。有一个更好的方法吗?这是我试图解决的功能。
add_shortcode('youtube','youtube_video');
function youtube_video($attr) {
$output = '<div class="youtube-container"><iframe width="560" height="420" src="http://www.youtube.com/embed/' . $attr[0] . '?autoplay=0" frameborder="0" allowfullscreen="false"></iframe></div>';
return $output;
}
我试图做这样的事,但没有运气
function youtube_video($attr) {
$output = '<div class="youtube-container"><iframe width="560" height="420" src="http://www.youtube.com/embed/' . $attr[0] . '?autoplay=0" frameborder="0" allowfullscreen="false"></iframe></div>';
return preg_replace('/\s.*$/', "", $output);
}
答案 0 :(得分:0)
可能就是你如何调用短代码。见https://make.wordpress.org/core/2015/07/23/changes-to-the-shortcode-api/。例如,曾经允许这样做:
<a href="/[shortcode query="?ref="]">
但是,现在不允许这样做。问题是未转义的双引号显然导致了跨站点脚本漏洞。以下是解决问题的方法:
Example 1: <a href="/[shortcode query='?ref=']">
Example 2: <a href='/[shortcode query="?ref="]'>
这两个例子都有效。
这是另一个例子。不再允许这样做:
<div style="background-image: url('[shortcode]');">
以下是他们建议的方式:
<div [shortcode]>