Como una extensión a @ G.M. Respuesta (que es la única forma posible de hacer esto), aquí hay una versión ligeramente reducida / mejorada y una versión ampliada (que yo personalmente prefiero):
Variante reducida / embellecida
Es suficiente hacer una verificación boolean
para el valor contenido. Si es true
, el resultado será (bool) true
, de lo contrario será falso. Esto produce un caso true
, todo lo demás false
resultado.
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 le permite al usuario escribir on/yes/1
como un alias para true
. Esto reduce la posibilidad de errores de usuario cuando el usuario no recuerda cuál fue el valor real para 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) Siempre pase el tercer argumento para shortcode_atts()
. De lo contrario, el filtro de atributos de código corto es imposible de orientar.
// The var in the filter name refers to the 3rd argument.
apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts );
2) Nunca use extract()
. Incluso el núcleo quiere reducir esas llamadas. Es igualmente peor que las variables global
, ya que los IDE no tienen la oportunidad de resolver los contenidos extraídos y emiten mensajes de error.