代码之家  ›  专栏  ›  技术社区  ›  Jelena P

短代码默认变量不出现

  •  0
  • Jelena P  · 技术社区  · 10 年前

    这是我的代码

    function myfunction ( $atts, $content = null ){
    
    $atts = extract(shortcode_atts(array(
    'limit' => 1,
    'order' => 'ASC',
    'columns' => '6'
    ),$atts));
    
    ob_start(); 
    include('php/blogcolumns.php');
    $content = ob_get_clean();
    return $content;
    }
    add_shortcode('blogcolumns','myfunction');
    

    问题是默认变量不会出现,只有当它们添加到短代码中时才会出现。不应该是那样的。 这是简码: [blogcolumns limit=“”order=“”columns=“”]

    这个代码有什么问题?

    2 回复  |  直到 10 年前
        1
  •  2
  •   TeeDeJee    10 年前

    不要添加没有值的属性。否则,将给出空字符串的值。所以它不采用默认值。

    例如

    [blogcolumns limit="3" columns="3"]
    

    [blogcolumns limit="5"]
    
        2
  •  0
  •   user488187 user488187    10 年前

    您没有提供HTML,但构造看起来不正确。这是什么:

    $atts = extract(shortcode_atts(array(
        'limit' => 1,
        'order' => 'ASC',
        'columns' => '6'
        ),$atts));
    

    所做的是创建变量$limit、$order和$columns(这就是extract()所做的),并将$atts设置为整数(extract的返回)。

    如果您的HTML正在查找$atts[‘somekey‘],那么它不会找到它。