开机自检中的插件快捷码值

时间:2016-01-01 作者:pico

主题与函数一起输出get_post_meta(get_the_ID(), \'some_value\', true); 当我尝试die(print_r()); 函数中有一些包含值的数组,例如

[item_ticket_tailor] => Array
        (
            [0] => [custom_event id="3106" ][custom_ticket id="3220" show_price="true"]
        )
问题是我怎样才能custom_ticket 具有的值get_post_meta() 作用

1 个回复
SO网友:jgraup

shortcode_parse_atts

接受一个短码属性字符串,并返回键/值对的关联数组。

// UNABLE TO TEST THIS
// $value = get_post_meta(get_the_ID(), \'some_value\', true);
// $sc = $value [ \'item_ticket_tailor\' ][ 0 ];

// TEST DATA - assuming the data is a string
$sc = \'[custom_event id="3106" ][custom_ticket id="3220" show_price="true"]\';

// pad some elements for a better parse
$sc = str_replace("[", " [ ", $sc);
$sc = str_replace("]", " ] ", $sc);

// convert the string shortcode to an array
$array = shortcode_parse_atts($sc);

// the last id is the winner, so custom_event id won\'t show here
// only custom_ticket id
echo $array[ \'id\' ]; // 3220
<小时>

ALTERNATE

$sc = \'[custom_event id="3106" ][custom_ticket id="3220" show_price="true"]\';

// split up the shortcodes
$sc = str_replace("]", " ", $sc);
$sc = str_replace("[", "[", $sc);
$shorts = array_filter(explode(\'[\', $sc));

$custom_event_id = false;

// loop through each one
foreach($shorts as $short) {

    // get the individual attributes of the shortcode
    $atts = shortcode_parse_atts($short);

    // if the first item in the parsed array is `custom_ticket` then get the id
    if($atts[ 0 ] === \'custom_ticket\') {
        $custom_event_id = $atts [ \'id\' ];
        break;
    }
}

echo $custom_event_id; // 3220

相关推荐

如何在另一个函数中使用插件的ShortCode属性值?

我有一个插件作为一个类,其中我使用一个shortcode属性来填充$outlet变量。然而,尽管sanitize_text_field($atts[\'outlet\']) 返回所需字符串,$this->outlet = sanitize_text_field($atts[\'outlet\']) 未更新的值$outlet. 如果我为类的$outlet 最初,它在example_callback(). 插件的所有其他功能都按预期工作。只是wp_news_shortcode() 未分配$attr 价值