保留短码内容格式

时间:2014-07-18 作者:Tyler Collier

当我在TinyMCE中的视觉编辑器和文本编辑器之间来回切换时,如何在短代码块中保留内容的格式?比如,在[myshortcode][/myshortcode]. 我在短代码中使用JSON。

我看过Switch between Visual and HTML tab freely 问题和Preserved HTML Editor Markup 插件。这个插件看起来不错,但我有数百个网站和数百个拥有这些网站的客户,我不想冒着用该插件所需的“修复”解决方案弄乱其内容的风险。实际上,我所要求的似乎是针对短代码块的内容部分的特殊解决方案,因此我希望找到一种比保留的HTML编辑器标记插件“更轻”的解决方案。

这里有一个“before”的例子text 模式:

[myshortcode]
{
    "map": {
        "zoom": 5
    }
}
[/myshortcode]
下面是一个切换到visual 模式:

[myshortcode]
{
"map": {
"zoom": 5
}
}
[/myshortcode]
之后,如果您切换回text 模式,您可以看到:

[myshortcode]
{
"map": {
"zoom": 5
}
}
[/myshortcode]

1 个回复
SO网友:mrwweb

这并不是对您问题的直接回答,但如果您有选择的话,我会重新构造短代码,使其包含一个或多个属性,然后您可以将这些属性插入到正确的JSON格式中。e、 g.:

[myshortcode zoom="5"]
这不仅可以防止您的站点编辑器犯语法错误(或者至少他们会犯不同的错误!)但可能会更加结构化和安全。例如,您的zoom shortcode属性可以确保只允许数字值,并且可以为那些没有使用其shortcode设置att的属性设置合理的默认值:

// [myshortcode zoom={integer}]
function myshortcode_func( $atts ) {
    $atts = shortcode_atts( array(
        // defaults
        \'zoom\' => 5,
        // etc...
    ), $atts );

    // sanitize!
    $atts[\'zoom\'] = intval( $atts[\'zoom\'] );

    // do lots of fancy JSON things
}
add_shortcode( \'myshortcode\', \'myshortcode_func\' );

结束