В качестве дополнения к ответу @GM (который является единственным возможным способом сделать это), вот немного укороченная / украшенная и расширенная версия (которую я лично предпочитаю):
Укороченный / украшенный вариант
Для этого достаточно boolean
проверить наличие содержимого. Если это так true
, результат будет (bool) true
, иначе он будет ложным. Это приводит к одному случаю true
, все остальное - false
результат.
add_shortcode( 'shortcodeWPSE', 'wpse119294ShortcodeCbA' );
function wpse119294ShortcodeCbA( $atts ) {
$args = shortcode_atts( array(
'boolAttr' => 'true'
), $atts, 'shortcodeWPSE' );
$args['boolAttr'] = 'true' === $args['boolAttr'];
}
Расширенный / безопасный для пользователя вариант
Причина, по которой я предпочитаю эту версию, заключается в том, что она позволяет пользователю вводить on/yes/1
псевдоним для true
. Это уменьшает вероятность ошибок пользователя, когда пользователь не помнит, каково было фактическое значение 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 );
}
Дополнительные замечания:
1) Всегда передавайте третий аргумент для shortcode_atts()
. В противном случае фильтр атрибутов шорткода невозможно нацелить.
// The var in the filter name refers to the 3rd argument.
apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts );
2) Никогда не используйте extract()
. Даже ядро хочет уменьшить эти звонки. В равной степени хуже для global
переменных, так как у IDE нет шансов разрешить извлеченное содержимое и будут выдаваться сообщения об ошибках.
false
, в противном случаеtrue
.