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 boolean
verificar o valor contido. Se for true
, o resultado será (bool) true
, caso contrário, será falso. Isso produz um caso true
, tudo o mais false
resulta.
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/1
como 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 global
variá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
.