В качестве дополнения к ответу @GM (который является единственным возможным способом сделать это), вот немного укороченная / украшенная и расширенная версия (которую я лично предпочитаю):
Укороченный / украшенный вариант
Для этого достаточно 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(). Даже ядро хочет уменьшить эти звонки. В равной степени хуже для globalпеременных, так как у IDE нет шансов разрешить извлеченное содержимое и будут выдаваться сообщения об ошибках.
false, в противном случаеtrue.