Como extensión de la respuesta @GM (que es la única forma posible de hacer esto), aquí hay una versión ligeramente acortada / embellecida y una versión extendida (que personalmente prefiero):
Variante acortada / embellecida
Es suficiente hacer una booleanverificación del valor contenido. Si es así true, el resultado será (bool) true, de lo contrario será falso. Esto produce un caso único true, todo lo demás falseresulta.
add_shortcode( 'shortcodeWPSE', 'wpse119294ShortcodeCbA' );
function wpse119294ShortcodeCbA( $atts ) {
$args = shortcode_atts( array(
'boolAttr' => 'true'
), $atts, 'shortcodeWPSE' );
$args['boolAttr'] = 'true' === $args['boolAttr'];
}
Variante extendida / segura para el usuario
La razón por la que prefiero esta versión es que permite al usuario escribir on/yes/1como un alias para true. Esto reduce la posibilidad de errores del usuario cuando el usuario no recuerda cuál era el 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 adicionales:
1) Pase siempre el tercer argumento para shortcode_atts(). De lo contrario, el filtro de atributos de código corto es imposible de identificar.
// The var in the filter name refers to the 3rd argument.
apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts );
2) Nunca lo use extract(). Incluso el núcleo quiere reducir esas llamadas. Es igualmente peor para las globalvariables, ya que los IDE no tienen la oportunidad de resolver el contenido extraído y arrojarán mensajes de falla.
false, de lo contrariotrue.