Como uma extensão da resposta do @GM (que é a única maneira possível de fazer isso), aqui está uma versão um pouco abreviada / embelezada e uma versão estendida (que eu pessoalmente prefiro):
Variante encurtada / embelezada
Basta booleanverificar o valor contido. Se for true, o resultado será (bool) true, caso contrário, será falso. Isso produz um caso true, tudo o mais falseresulta.
add_shortcode( 'shortcodeWPSE', 'wpse119294ShortcodeCbA' );
function wpse119294ShortcodeCbA( $atts ) {
$args = shortcode_atts( array(
'boolAttr' => 'true'
), $atts, 'shortcodeWPSE' );
$args['boolAttr'] = 'true' === $args['boolAttr'];
}
Variante estendida / segura para o usuário
A razão pela qual prefiro esta versão é que ela permite ao usuário digitar on/yes/1como um alias para true. Isso reduz a chance de erros do usuário quando o usuário não se lembra qual era o valor real 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 );
}
Notas Adicionais:
1) Sempre passe o terceiro argumento para shortcode_atts(). Caso contrário, o filtro de atributos de código curto é impossível de segmentar.
// The var in the filter name refers to the 3rd argument.
apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts );
2) Nunca use extract(). Até o núcleo quer reduzir essas ligações. É igualmente pior para as globalvariáveis, pois os IDEs não têm chance de resolver o conteúdo extraído e lançam mensagens de falha.
false, caso contráriotrue.