Wordpress 内部嵌套短代码不起作用-例如:列未显示行的内部

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 /

我想创建特殊样式的列,但是让客户端仍然可以轻松地编辑列的内容。。所以我创建了自己的短代码来设置里面的行和列。(这是我为特定客户端创建的自定义wordpress模板)

以下是my function.php中两个短代码“member row”和“member”的代码:

    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>';
});