我在使用我为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>
我做错了什么?
答案 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闭包。如果您遇到旧版本,请替换您需要的任何内容。