尝试使用$ atts创建一个短代码。我在学

时间:2014-01-23 23:27:09

标签: php wordpress shortcode

我在使用我为WordPress制作的这个短代码输入正确的代码时遇到问题。我正在尝试让我的短代码[onecol]接受具有两个值“first”和“last”之一的属性,如果没有输入任何属性,那么我希望它使用默认值。然后我希望它呈现一些类似于此的输出:

<div class="onecol first clearfix">Hello World</div>

我希望短代码看起来像这样:

[onecol col="first"]Hello World[/onecol]

这是我到目前为止的代码:

function one_col( $atts, $content = null ) {
    extract( shortcode_atts( array(
        'class' => 'col'
    ), $atts ) );

    $depth = 0;
    $indent = str_repeat("\t", $depth);

    return "\n$indent<div class=\"onecol " . esc_attr__($class) . " clearfix\">\n" . $content . "$indent</div>\n";
}

add_shortcode( 'onecol', 'one_col' );

到目前为止,这个输出:

<div class="onecol col clearfix>Hello World</div>

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您的属性名称错误。试试这个......

add_shortcode('onecol', function($atts, $content = null) {
    extract(shortcode_atts([
        'col' => 'first' // this is your default "col" attribute value
    ], $atts));

    return sprintf('<div class="onecol %s clearfix">%s</div>',
        htmlspecialchars($col), do_shortcode($content));
});

这使用PHP 5.4数组语法和PHP 5.3闭包。如果您遇到旧版本,请替换您需要的任何内容。