Wordpress 内部嵌套短代码不起作用-例如:列未显示行的内部
我想创建特殊样式的列,但是让客户端仍然可以轻松地编辑列的内容。。所以我创建了自己的短代码来设置里面的行和列。(这是我为特定客户端创建的自定义wordpress模板) 以下是my function.php中两个短代码“member row”和“member”的代码:Wordpress 内部嵌套短代码不起作用-例如:列未显示行的内部,wordpress,nested,row,shortcode,Wordpress,Nested,Row,Shortcode,我想创建特殊样式的列,但是让客户端仍然可以轻松地编辑列的内容。。所以我创建了自己的短代码来设置里面的行和列。(这是我为特定客户端创建的自定义wordpress模板) 以下是my function.php中两个短代码“member row”和“member”的代码: add_shortcode('member-row', function ($content = null) { return '<div class="row"> <br /
add_shortcode('member-row', function ($content = null) {
return '<div class="row">
<br />'.do_shortcode($content).'</div>';
});
add_shortcode('member', function ($atts, $content = null) {
extract(shortcode_atts(array(
'color' => 'white',
), $atts));
return '<div class="col-md-6 col-sm-6 col-xs-12 md-margin-bottom-40">
<div class="member-col funny-boxes funny-boxes-top-'.$color.'">'.do_shortcode($content).'</div>
</div>';
});
当我保存并单击“查看页面”时,添加此内容的部分不会显示任何内容
这是生成的html代码:
<div class="row">
<br /></div>
因此,它只执行“成员行”短代码,而不是嵌套的“成员”短代码列
这是我所期望的正确的html代码:
<div class="row">
<br />
<div class="col-md-6 col-sm-6 col-xs-12 md-margin-bottom-40">
<div class="member-col funny-boxes funny-boxes-top-gold">
<a href="http://www.example1.com/"><img class="aligncenter img-responsive" src="http://localhost/test/testWP/wp-content/uploads/2015/07/logo1.jpg" alt="logo" /></a>
<strong>Company 1</strong>
Address
Telephone
<a href="http://www.example1.com/" target="_blank">www.example1.com</a>
</div>
</div>
<div class="col-md-6 col-sm-6 col-xs-12 md-margin-bottom-40">
<div class="member-col funny-boxes funny-boxes-top-yellow">
<a href="http://www.example2.com/"><img class="aligncenter img-responsive" src="http://localhost/test/testWP/wp-content/uploads/2015/07/logo2.jpg" alt="logo" /></a>
<strong>Company 2</strong>
Address
Telephone
<a href="http://www.example2.com/" target="_blank">www.example2.com</a>
</div>
</div>
</div>
公司1
地址
电话
公司2
地址
电话
当我从编辑器窗口中删除周围的[member row]
和[/member row]
短代码时,“member”列短代码就不会正确地显示在网页上了。。因此,似乎正是位于“成员行”短代码的内部导致了问题
注意:我确实尝试添加了add_过滤器('the_content','do_shortcode',10)代码>行添加到我的function.php文件的底部,但它似乎没有任何区别,所以我删除了它
希望我刚刚犯了一些打字错误。。任何帮助都将不胜感激
谢谢。我解决了这个问题
我必须为成员行短代码的函数添加$atts
,如下所示:
add_shortcode('member-row', function ($atts, $content = null) {
return '<div class="row">
<br />'.do_shortcode($content).'</div>';
});
add_短码('member-row',函数($atts,$content=null){
返回'
。不要使用短代码($content)。”;
});
它现在可以正常工作了
我不确定为什么需要添加$atts
,因为此短代码不传递属性或设置默认属性,但如果要将封闭短代码与$content
一起使用,您似乎需要它。(可能是因为$content
被定义为“第二个”参数???才需要它。)
我刚刚在WP Codex中读到了shortcode api
三个参数{$atts,$content,$tag}
被传递到短代码
回调函数。您可以选择使用任意数量的回调函数,包括
没有一个。”
因此,在我看来,您可以单独使用$content
。。。但是,正如我刚刚证明的那样,$content
本身是不可能的——我仍然不确定我的解决方案对我有效的原因。(很高兴它做到了!)
如果有人知道需要使用$atts
来实现此功能的规则或原因,我将非常感谢您的评论,以便为我自己和其他有相同问题的人澄清这一点
谢谢 不@vrajesh。。这是另一个问题。从我之前提出的问题(参见您提供的链接)中,经过进一步研究,我学会了如何添加一个封闭的短代码,使我能够在页面编辑器中正确地使用开始和结束标记,如[box]和[/box]。我已经在我正在创建的新短代码中使用了上述信息。。但这次我要处理嵌套的短代码。。这就是我的问题所在
add_shortcode('member-row', function ($atts, $content = null) {
return '<div class="row">
<br />'.do_shortcode($content).'</div>';
});