作为@G.M.answer(这是唯一可行的方法)的扩展,这里有一个略为缩短/美化和扩展的版本(我个人更喜欢):
缩短/美化的变体boolean
检查包含的值。如果是true
, 结果将是(bool) true
, 否则将是错误的。这将生成一个案例true
, 其他一切false
后果
add_shortcode( \'shortcodeWPSE\', \'wpse119294ShortcodeCbA\' );
function wpse119294ShortcodeCbA( $atts ) {
$args = shortcode_atts( array(
\'boolAttr\' => \'true\'
), $atts, \'shortcodeWPSE\' );
$args[\'boolAttr\'] = \'true\' === $args[\'boolAttr\'];
}
扩展/用户安全变体我之所以喜欢这个版本,是因为它允许用户输入
on/yes/1
作为的别名
true
. 当用户不记得实际值时,这减少了用户出错的机会
true
是
add_shortcode( \'shortcodeWPSE\', \'wpse119294ShortcodeCbA\' );
function wpse119294ShortcodeCbA( $atts ) {
$args = shortcode_atts( array(
\'boolAttr\' => \'true\'
), $atts, \'shortcodeWPSE\' );
$args[\'boolAttr\'] = filter_var( $args[\'boolAttr\'], FILTER_VALIDATE_BOOLEAN );
}
其他注意事项:1)始终传递
shortcode_atts()
. 否则,无法定位快捷码属性过滤器。
// The var in the filter name refers to the 3rd argument.
apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts );
2)切勿使用
extract()
. 甚至core也希望减少这些通话。同样糟糕的是
global
变量,因为IDE没有机会解析提取的内容,并且会抛出失败消息。