Jako rozszerzenie odpowiedzi @GM (która jest jedynym możliwym sposobem na zrobienie tego), oto nieco skrócona / upiększona i rozszerzona wersja (którą osobiście wolę):
Skrócony / Upiększony wariant
Wystarczy booleansprawdzić zawartą wartość. Jeśli tak true, wynik będzie (bool) true, w przeciwnym razie będzie fałszywy. Daje to jeden przypadek true, wszystko inne falseskutkuje.
add_shortcode( 'shortcodeWPSE', 'wpse119294ShortcodeCbA' );
function wpse119294ShortcodeCbA( $atts ) {
$args = shortcode_atts( array(
'boolAttr' => 'true'
), $atts, 'shortcodeWPSE' );
$args['boolAttr'] = 'true' === $args['boolAttr'];
}
Wariant rozszerzony / bezpieczny dla użytkownika
Powodem, dla którego wolę tę wersję, jest to, że pozwala ona wpisać się on/yes/1jako alias true. Zmniejsza to ryzyko błędów użytkownika, gdy użytkownik nie pamięta, jaka była rzeczywista wartość 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 );
}
Dodatkowe uwagi:
1) Zawsze przekazuj trzeci argument za shortcode_atts(). W przeciwnym razie filtr atrybutów krótkiego kodu nie może być celem.
// The var in the filter name refers to the 3rd argument.
apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts );
2) Nigdy nie używaj extract(). Nawet rdzeń chce ograniczyć te połączenia. Gorzej jest ze globalzmiennymi, ponieważ IDE nie mają szansy na rozwiązanie wyodrębnionej zawartości i wyrzucą komunikaty o niepowodzeniach.
false, w przeciwnym razietrue.