是否将嵌套的短码作为另一个短码的参数传递?

时间:2018-09-19 作者:cbuchart

我很好奇如何处理参数中的短码(而不是嵌套的短码,这已经被考虑过了)::

function do_foo_shortcode($atts, $content = null) {
    extract(shortcode_atts(array(
        \'bar\' => \'\',
    ), $atts, \'foo\'));

    $bar = do_shortcode($bar);
    $content = do_shortcode($content);

    return "$bar - $content";
}
add_shortcode(\'foo\', \'do_foo_shortcode\');
例如:

[foo bar=[video src="video-source.mp4"]]Hello world![/foo]
生成:

[视频-]你好,世界!

我如何考虑此类情况以及如何正确使用它们?

1 个回复
SO网友:cbuchart

到目前为止,我找到的部分解决方案是在初始调用中转义括号,然后替换do_foo_shortcode 作用

function do_foo_shortcode($atts, $content = null) {
    extract(shortcode_atts(array(
        \'bar\' => \'\',
    ), $atts, \'foo\'));

    $bar = str_replace("[", "[", $bar);
    $bar = str_replace("]", "]", $bar);
    $bar = do_shortcode($bar);
    $content = do_shortcode($content);

    return "$bar - $content";
}
并称之为

[foo bar="[video src=video-source.mp4]"]Hello world![/foo]
当然,这是一个不完整的解决方案,因为它不允许超过1级的嵌套,并且引号不能在内部短代码中使用。更不用说写起来有多复杂了。

结束

相关推荐

Shortcode with foreach

我不能对foreach使用shortcode。它给了我语法错误。我错在哪里?function create_galeri_shortcode($atts) { $atts = shortcode_atts( array( ), $atts, \'galeri\' ); if ( has_post_format( \'gallery\' )) { $images = get_post_