不含值和特殊字符的简码属性

时间:2018-08-23 19:22:06

标签: wordpress shortcode

  1. Wordpress短代码是否可以具有不含此类值的属性?

    [foo some_att]
    

    我知道它可能是这样的:

    [foo some_att=""]
    
  2. 我可以有这样的短代码值(带有花括号)吗?

    [foo path="{'quality': '720p', 'mp4': 'PATH_TO_MP4_VIDEO'}"]
    

1 个答案:

答案 0 :(得分:0)

  1. 您肯定可以! RichJenks上有一篇简短但内容丰富的文章,介绍了如何实现此功能,归纳为定义一个新函数,该函数可以告诉您$atts数组中是否存在标志(无关联值的参数):< / p>

    function is_flag( $flag, $atts ) {
        foreach ( $atts as $key => $value )
            if ( $value === $flag && is_int( $key ) ) return true;
        return false;
    }
    

    定义此函数后,您可以在简码函数中引用is_flag(),以判断该标志是否已作为简码调用的一部分提供:

    if is_flag( 'some_att', $atts )
        // flag is present
    else
        // flag is not present
    
  2. 不幸的是,您提供的示例不适用于Wordpress短代码解析器的参数值。根据官方Wordpress documentation on the Shortcode API的说法:

      

    属性值不得包含以下字符:   

         
        
    • 方括号:[]
    •   
    • 行情:“'
    •   

    由于您的示例使用单引号字符('),因此短代码解析引擎正式不支持该字符。