将快捷码拆分为快捷码数组

时间:2017-01-13 作者:Vĩnh Nguyễn Trọng

例如,我有一个非常复杂的短代码,如下所示:

[shortcode-1 attr1 attr2]
    [child-shortcode-1 attr1="231czx"]
        ...
    [/child-shortcode-1]
    [child-shortcode-2 /]
[/shortcode-1]
[shortcode-2 attr1="cxzc"]
    ...
[/shortcode-2]
[shortcode-3 attr1="123" attr2="456" /]
如何将这些短代码拆分为:

array(
    0 => \'[shortcode-1 attr1 attr2]
    [child-shortcode-1 attr1="231czx"]
        ...
    [/child-shortcode-1]
    [child-shortcode-2 /]
[/shortcode-1]\',
    1 => \'[shortcode-2 attr1="cxzc"]
    ...
[/shortcode-2]\',
    3 => \'[shortcode-3 attr1="123" attr2="456" /]\'
);
非常感谢。

1 个回复
SO网友:Tunji

Wordpress已经内置了对的支持Nested Shortcodes提供的处理程序函数通过递归调用来支持它。

例如,如果您有:

[tag-a]
   [tag-b]
      [tag-c]
   [/tag-b]
[/tag-a]
只要你递归调用do_shortcode 在您的shortcode函数中,将解析所有的shortcode。

因此,您可以为短代码定义如下函数:

For tag-a:

function tag_a( $atts ){
    $output = "";
    return do_shortcode($output);
}
add_shortcode( \'tag-a\', \'tag_a\' );

For tag-b:

function tag_b( $atts ){
    $output = "";
    return do_shortcode($output);
}
add_shortcode( \'tag-b\', \'tag_b\' );

For tag-c:

function tag_c( $atts ){
    $output = "";
    return do_shortcode($output);
}
add_shortcode( \'tag-c\', \'tag_c\' );

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请