在嵌套的快捷代码中传递变量

时间:2013-12-27 作者:Sodbileg Gansukh

我怎样才能通过style 的属性[boxes] 短代码到[box] 不使用全局变量的短代码?我不想使用全局变量,因为我在几篇文章中看到,使用全局变量是一种不好的做法。

[boxes style="style-one"]
    [box][/box]
    [box][/box]
    [box][/box]
    [box][/box]
[/boxes]

1 个回复
SO网友:MrJustin

如果我要做这样的事情,那么我实际上会构建2个短代码。一个用于“盒子”,一个用于内部“盒子”。我确实相信这是唯一可行的方法。

为外部框构建一个时,只需确保使用do\\u shortcode();围绕内容变量。如果不使用do\\u shortcode(),则无法在另一个短代码中使用短代码[]。

add_shortcode(\'boxes\', \'shortcode_boxes\');
add_shortcode(\'box\', \'shortcode_box\');

function shortcode_boxes($args, $content = null) {
extract(shortcode_atts(array( 
    \'style\' => \'\'
), $args));
return \'<section class="\'. $style .\'">\'. do_shortcode($content) .\'</section>\';
}

function shortcode_box($args, $content = null) {
extract(shortcode_atts(array( 
    \'id\' => \'\'
), $args));
return \'<article id="\'. $id .\'">\'. do_shortcode($content) .\'</article>\';
}
这是在HTML5中完成的,但您可以更改文章&;分区到div,一切都会好起来的。

用法:

[boxes class="blue"]
    [box id="one"]content[/box]
    [box id="two"]content[/box]
[/boxes]
您将希望在编辑器上使用文本版本而不是视觉版本,除非您使用重写过滤器来修复空格/p/br如果没有,则必须使用

[boxes style="blue"]
    [box id="one"]
    content
    [/box]
    [box id="two"]
    content
    [/box]
[/boxes]
如果您有任何问题、疑问或担忧,请告诉我。

---编辑---

将样式替换为类:

<section class="\'. $style .\'">
课程应该按照你的风格设置。css,在本例中为蓝色。

.blue {
    /* class style */
}

结束

相关推荐

WP_Editor Shortcode Issue

我已经使用wp\\u编辑器创建了一个前端编辑器,它可以正常工作。在测试时,我注意到它正在剥离插入内容中的任何短代码。我研究了这个问题,发现正是“ob\\u”(输出缓冲)删除了它们。如果删除此输出缓冲,则短代码显示良好,但它破坏了我为编辑器创建的功能。如何保留下面使用的代码,但对其进行修改以确保显示所有短代码?非常感谢您的任何帮助/想法,S。if(!is_feed() && current_user_can( \'manage_network\' ) ) : functio