Shortcode multiple values

时间:2019-12-04 作者:Toniq

这是我的数据(示例):

var obj = {
something:\'custom\'
people:[
    {
        name:\'john\',
        age:51
    },
    {
        name:\'jenny\',
        age:62
    }
]
}
我使用这样的短代码:

[foo name="john,jenny" age="51,62" something="custom"]
比方说,我需要在一个短代码中包含多个这样的对象,如何使短代码看起来像这样,以便处理它并获取数据?

1 个回复
SO网友:Kaperto

您可以创建一个字符串并对其进行解析。你从

[foo people="name:john,age:51|name:jenny,age:62" something="custom"]
你使用这个代码

add_shortcode("foo", function ($attr, $content, $tag) {


    // parsing attributes

    $attr["people"] = explode("|", $attr["people"]);

    $attr["people"] = array_map(function ($e) {

        $tab = [];

        foreach (explode(",", $e) as $raw_tab) {
            $tab2 = explode(":", $raw_tab);
            $tab[$tab2[0]] = $tab2[1];
        }


        return $tab;

    }, $attr["people"]);


    /*

    $attr = array(
        \'people\' => array(
            0 => array(
                \'name\' => \'john\',
                \'age\' => \'51\',
            ),
            1 => array(
                \'name\' => \'jenny\',
                \'age\' => \'62\',
            ),
        ),
        \'something\' => \'custom\',
    );

    */


    // generate output

    $result = "...";


    return $result;

});

相关推荐

如何从派生的进程中使用STRING_SHORTCODES()?

我有一个插件,它生成一个进程来执行打印功能。要打印的项目(在本例中为Woocommerce产品)通过URL传递(通过product_id). 在进行打印之前,必须从产品描述中删除所有注册的短代码。如果我打电话strip_shortcodes() 它什么都不做。我猜注册的短代码数组超出了范围?是否有人能提出一种有效的方法,使流程能够使用strip_shortcodes()?