Sebagai ekstensi untuk jawaban @GM (yang merupakan satu-satunya cara yang mungkin untuk melakukan ini), inilah versi yang sedikit disingkat / dipercantik dan dan diperpanjang (yang secara pribadi saya sukai):
Varian yang dipersingkat / Dipercantik
Cukup dengan boolean
memeriksa nilai yang terkandung. Jika ya true
, hasilnya akan (bool) true
, kalau tidak akan salah. Ini menghasilkan satu kasus true
, semua false
hasil lainnya .
add_shortcode( 'shortcodeWPSE', 'wpse119294ShortcodeCbA' );
function wpse119294ShortcodeCbA( $atts ) {
$args = shortcode_atts( array(
'boolAttr' => 'true'
), $atts, 'shortcodeWPSE' );
$args['boolAttr'] = 'true' === $args['boolAttr'];
}
Varian Diperpanjang / Aman bagi pengguna
Alasan mengapa saya lebih suka versi ini adalah karena ini memungkinkan pengguna untuk mengetik on/yes/1
sebagai alias untuk true
. Ini mengurangi kemungkinan kesalahan pengguna ketika pengguna tidak ingat apa nilai sebenarnya untuk true
itu.
add_shortcode( 'shortcodeWPSE', 'wpse119294ShortcodeCbA' );
function wpse119294ShortcodeCbA( $atts ) {
$args = shortcode_atts( array(
'boolAttr' => 'true'
), $atts, 'shortcodeWPSE' );
$args['boolAttr'] = filter_var( $args['boolAttr'], FILTER_VALIDATE_BOOLEAN );
}
Catatan tambahan:
1) Selalu berikan argumen ke-3 untuk shortcode_atts()
. Jika tidak, filter atribut shortcode tidak dapat ditargetkan.
// The var in the filter name refers to the 3rd argument.
apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts );
2) Jangan pernah gunakan extract()
. Bahkan inti ingin mengurangi panggilan itu. Ini sama buruknya dengan global
variabel, karena IDE tidak memiliki kesempatan untuk menyelesaikan konten yang diekstraksi dan akan melempar pesan kegagalan.
false
, jika tidaktrue
.