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 boolean
verificació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 false
resulta.
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/1
como 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 global
variables, ya que los IDE no tienen la oportunidad de resolver el contenido extraído y arrojarán mensajes de falla.
false
, de lo contrariotrue
.