据我所知,您需要在多个短代码之间留一个空格。
我相信你可以不费吹灰之力做到这一点
[myshortcode attr="test1" content="test1" ...etc]
[myshortcode attr="test2" content="test2" ...etc]
[myshortcode attr="test3" content="test3" ...etc]
这也应该起作用:
[myshortcode]Enclosed content[/myshortcode] [myshortcode]Enclosed content[/myshortcode] [myshortcode]Enclosed content[/myshortcode] [myshortcode]Enclosed content[/myshortcode] [myshortcode]Enclosed content[/myshortcode]
此外:
http://codex.wordpress.org/Shortcode_API
解析器不会像您希望的那样处理同一短代码的封闭形式和非封闭形式的混合。例如,如果您有:
[myshortcode example=\'non-enclosing\' /] non-enclosed content [myshortcode] enclosed content [/myshortcode]
解析器没有将其视为由文本“非封闭内容”分隔的两个短代码,而是将其视为封闭“非封闭内容[myshortcode]封闭内容”的单个短代码。
因此,这似乎不是一个bug。这似乎是记录在案的行为。
自动关闭的短代码可以很好地协同工作。
我也可能不理解这个问题,但我尝试了以下方法:
[svg src="test" width="300" height="300" style="display:block; margin:auto;" type="embed"]1111[/svg] [svg src="test" width="300" height="300" style="display:block; margin:auto;" type="embed"]1111[/svg] [svg src="test" width="300" height="300" style="display:block; margin:auto;" type="embed"]1111[/svg] [svg src="test" width="300" height="300" style="display:block; margin:auto;" type="embed"]1111[/svg]
这非常有效。
代码最终如下所示:
function process_shortcode( $atts , $input ) {
$valid_attributes = array( \'src\' , \'style\' , \'type\' , \'width\' , \'height\' );
$content = NULL;
foreach( $atts as $attribute => $value ) {
if( ! in_array( $attribute , $valid_attributes ) ) {
$content .= "\\n" . \'<!-- Invalid attribute ignored: \' . $attribute . \' -->\' . "\\n";
}
}
switch( $atts[ \'type\' ] ) {
case \'iframe\':
$content .= \'<iframe src="\' . $atts[ \'src\' ] . \'" width="\' . $atts[ \'width\' ] . \'" height="\' . $atts[ \'height\' ] . \'" style="\' . $atts[ \'style\' ] . \'">\';
$content .= \'</iframe>\';
break;
case \'embed\':
default:
$content .= \'<div>\';
$content .= $input;
$content .= \'<embed src="\' . $atts[ \'src\' ] . \'" width="\' . $atts[ \'width\' ] . \'" height="\' . $atts[ \'height\' ] . \'" \';
$content .= \'type="image/svg+xml" pluginspage="http://www.adobe.com/svg/viewer/install/" style="\' . $atts[ \'style\' ] . \'" /> \';
$content .= \'</div>\';
break;
}
return $content;
}