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 boolean
sprawdzić 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 false
skutkuje.
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/1
jako 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 global
zmiennymi, ponieważ IDE nie mają szansy na rozwiązanie wyodrębnionej zawartości i wyrzucą komunikaty o niepowodzeniach.
false
, w przeciwnym razietrue
.