使快捷代码与嵌套双引号一起工作

时间:2014-05-12 作者:Mike

我有以下短代码:

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"]

But:

一旦用户尝试在短代码中添加引用链接,它当然会中断:

[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似乎删除了属性的单引号,并添加了双引号,这再次打破了我的短代码。

现在我看到了两种解决方案,但都不是很令人满意。

a) 告诉WP在保存帖子orb时不要将a href链接中的单引号转换为双引号),以使短代码使用双引号。

还有什么其他的提示或解决方法吗?

谢谢

迈克

1 个回复
最合适的回答,由SO网友:Rarst 整理而成

不管怎样,对于短代码中的任意标记,这似乎是一个非常笨拙的解决方案。

如果只有一个属性更大,并且包含标记,我会考虑将短代码括起来:

[infobox src="http://www.google.com" title="Google"]
    Some description - see more: <a href="http://www.google.com">More here</a>
[/infobox]
您可能需要构建自定义UI,否则用户很容易出错。

结束

相关推荐

Manipulated shortcode output

我开发的一个注册短代码的插件有问题。短代码返回一个包含有效HTML的字符串,但一些主题似乎操纵了短代码返回的HTML,我真的不明白原因是什么。例如,这是我的短代码的正确输出:<div class=\"tile\"> <a> <img src=\"0.jpg\" /> <div class=\"caption\"> <p>Kate</p> </div&