Como uma extensão para @ G.M. resposta (que é a única maneira possível de fazer isso), aqui está uma versão ligeiramente encurtada / embelezada e estendida (que eu pessoalmente prefiro):
Variante abreviada / embelezada
É suficiente fazer uma boolean
para verificar o valor contido. Se for true
, o resultado será (bool) true
, senão será falso. Isso produz um caso true
, todo o resto false
result.
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
O motivo pelo qual eu prefiro essa versão é que ela permite que o usuário digite on/yes/1
como um alias para true
. Isso reduz a chance de erros do usuário quando o usuário não lembra qual era o valor real de 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()
. Além disso, 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 chamadas. É igualmente pior para global
variables, pois os IDEs não têm a chance de resolver o conteúdo extraído e enviarão mensagens de falha.